smbclient 是什么
smbclient 是 Samba 套件里的 SMB/CIFS 客户端,用来从 Linux 侧访问 Windows 共享或 NAS。它既能进入交互式命令行浏览目录、收发文件,也能用 -c 参数在一条命令里完成批量动作,适合脚本化搬运。信创迁移期用它把 Windows 共享上的资料拉过来,或者把系统配置反向备份到共享目录,是替代图形文件管理器的常用手段。
基本信息
| 适用平台 | 全部 Linux 发行版,需装 samba-client / smbclient 包 |
|---|---|
| 列共享 | smbclient -L //主机 -U 用户 |
| 连接共享 | smbclient //主机/共享名 -U 用户 |
| 脚本化 | 加 -c '动作1; 动作2' 一次执行多条命令 |
| 认证形式 | 域账号写 DOMAIN\\user,或 -U user%口令 |
典型使用场景
- 迁移期搬运:把 Windows 文件服务器上的目录批量拉到信创主机
- 反向备份:把本机关键配置上传到 Windows 共享做异地副本
- 无图形环境取文件:服务器上没有文件管理器,用命令行访问共享
- 脚本化批量:用 -c 组合 mkdir、put、get 完成定时同步
- 共享可用性核查:登录前先用 -L 确认共享名与权限是否符合预期
列出、连接与批量操作
列出、连接与批量操作
smbclient -L //10.0.0.5 -U domain\\user # 列出该主机的共享列表
smbclient //10.0.0.5/share -U user # 交互式进入共享
# 交互模式里的常用命令:ls、cd、lcd、get、put、mkdir、exit
smbclient //10.0.0.5/share -U user -c 'ls' # 单条命令模式
smbclient //10.0.0.5/share -U user -c 'get report.xlsx /tmp/report.xlsx' # 下载文件
smbclient //10.0.0.5/share -U user -c 'mkdir backup; put /etc/hosts hosts.bak' # 上传
smbclient //10.0.0.5/share -U user -c 'recurse; prompt; mget *.csv' # 递归批量下载常用参数读法
| 参数 | 作用 | 注意事项 |
|---|---|---|
| -L 主机 | 列出共享与服务 | 需配合 -U,匿名常被服务端拒绝 |
| -U 用户 | 指定认证账户 | 域账号写成 DOMAIN\\user |
| -U user%口令 | 口令随命令给出 | 会留在 shell 历史里,生产慎用 |
| -c '命令串' | 非交互执行 | 多条用分号分隔,失败不中断后续 |
| -m SMB3 | 指定协议版本 | 老 NAS 与新版客户端协议协商失败时使用 |
| -p 445 | 指定端口 | 默认自动协商,特殊网络环境才需显式指定 |
| -T 打包参数 | tar 模式传输 | 适合大目录归档式拉取 |
域环境用 DOMAIN\\user 形式;协议协商失败报 unsupported dialect 时加 -m SMB3 或按服务端支持的最低版本调整。
命令行用 %口令 会写进 shell 历史与进程列表,生产环境改用凭据文件或交互输入。