#samba #smb #smb2 #smb3 #network-protocol

sys pavao

基于 libsmbclient 的 SMB 2/3 Rust 客户端库

9 个版本

0.2.7 2024 年 7 月 29 日
0.2.6 2024 年 4 月 11 日
0.2.5 2024 年 2 月 13 日
0.2.4 2024 年 1 月 28 日
0.1.2 2022 年 5 月 26 日

#236网络编程

Download history 207/week @ 2024-04-28 136/week @ 2024-05-05 121/week @ 2024-05-12 130/week @ 2024-05-19 85/week @ 2024-05-26 132/week @ 2024-06-02 86/week @ 2024-06-09 167/week @ 2024-06-16 106/week @ 2024-06-23 72/week @ 2024-06-30 148/week @ 2024-07-07 162/week @ 2024-07-14 139/week @ 2024-07-21 256/week @ 2024-07-28 186/week @ 2024-08-04 143/week @ 2024-08-11

744 每月下载量
用于 4 个 crate (3 个直接使用)

GPL-3.0 许可证

99KB
2.5K SLoC

Pavão

pavao logo

~ Rust SMB 客户端库 ~

开始使用 · Crates.io · 文档

@veeso 开发

当前版本:0.2.7 (29/07/2024)

License-GPLv3 Repo stars Downloads counter Latest version Ko-fi

Linux CI MacOS CI Coveralls Docs



关于 Pavão 🦚

Pavão (/pɐ.ˈvɐ̃w̃/) 是一个 Rust SMB 版本 2 和 3 客户端库,它公开了类型安全的函数来与 C libsmbclient 交互。

Pavão |> Pavé |> 动物之森 |> 狂欢节 |> 里约热内卢 |> Samba |> SMB

Windows 的 SMB Rust 客户端

SMB 在 Windows 上由 fs 模块本机支持。如果您想了解如何在 Windows 上使用 Rust 访问 SMB 共享,请查看此文章 https://blog.veeso.dev/blog/en/how-to-access-an-smb-share-with-rust-on-windows/ 或考虑采用 remotefs-smb


开始使用 🏁

将 pavao 添加到你的 Cargo.toml 🦀

pavao = "0.2"

在你的系统上安装 pavao C 依赖项 🖥️

MacOS 🍎

使用 brew 安装 samba

brew install samba

基于 Debian 的系统 🐧

使用 apt 安装 libsmbclient

apt install -y libsmbclient-dev libsmbclient

⚠️ 仅在构建应用程序的机器上需要 libsmbclient-dev

基于 RedHat 的系统 🐧

使用 dnf 安装 libsmbclient

dnf install libsmbclient-devel libsmbclient

⚠️ 仅在构建应用程序的机器上需要 libsmbclient-devel

OpenBSD 🐡

使用 pkg_add 安装 samba

pkg_add samba

从源代码构建 📁

从源代码构建安装 libsmbclient

wget -O samba.tar.gz https://github.com/samba-team/samba/archive/refs/tags/samba-4.16.1.tar.gz
mkdir -p samba/
tar  xzvf samba.tar.gz -C samba/ --strip-components=1
rm samba.tar.gz
cd samba/
./configure
make
make install
cd ..
rm -rf samba/

创建 pavao 应用程序

use pavao::{SmbClient, SmbCredentials, SmbOptions, SmbOpenOptions};

// Initialize a new client
let client = SmbClient::new(
    SmbCredentials::default()
        .server(server)
        .share(share)
        .password(password)
        .username(username)
        .workgroup(workgroup),
    SmbOptions::default().one_share_per_server(true),
)
.unwrap();
// do anything you want here with client
let mut file = client.open_with("/abc/test.txt", SmbOpenOptions::default().read(true)).unwrap();
// read file...
drop(file);
// disconnect from server
drop(client);

运行示例

此存储库提供了两个示例,可在 examples/ 目录下找到。

tree 示例可用于获取 smb 共享的文件系统树,可使用以下命令运行:

cargo run --example tree -- -u <username> -w <workspace> -s <share> -P <password> smb://<hostname>

transfer 示例显示了如何将文件写入远程主机,可使用以下命令运行:

cargo run --example transfer -- -i <file_on_local> -o <file_to_write> -u <username> -w <workspace> -s <share> -P <password> smb://<hostname>

文档 📚

开发者文档可以在Rust Docs上找到,请访问 https://docs.rs/pavao


支持开发者 ☕

如果您喜欢Pavão并对我所做的工作表示感谢,请考虑进行小额捐赠 🥳

您可以使用以下平台之一进行捐赠

ko-fi PayPal


贡献和问题 🤝🏻

欢迎贡献、错误报告、新功能问题和疑问!😉 如果您有任何问题或疑虑,或者您想建议一个新功能,或者您只是想改进pavao,请随意打开一个问题或PR。

请遵循我们的贡献指南


更新日志 ⏳

在此处查看Pavão的变更日志


许可证 📃

Pavão采用GPLv3许可证。

您可以在此处阅读完整的许可证

依赖项

~0.3–0.9MB
~21K SLoC