利用smbclient实现操作windows共享文件
当安装好一台windows服务器,需要将一些文件上传到这个操作系统,而本网段只有linux操作系统时,我们可以想到的方法可能有两种:
- 使用远程桌面挂载本地硬盘
- 通过ssh服务进行传输
但有些时候,这台windows的操作系统不是通过pxe定制过的,同时远程桌面连接是跨国家的,因此受制于对方没有ssh服务或者网络速度过慢影响。当需要传输一个大文件时,只能依靠远程桌面挂载本地硬盘;当经历了漫长的等待后,传送完99%,系统通知找不到路径!崩溃吧,然后不得不将命运再次交给网络。。。。
那么,有没有更好的方法?答案是肯定的,而且不仅很多种。这里向大家介绍一种常被忽略的方法:
将文件转义到本地区网络内,再使用smbclient将文件上传到目标windows服务器
使用条件:
- windows服务器开启Server服务,对外提供共享服务
- 源文件服务器安装smbclient,一般默认安装
- 访问windows共享目录的权限:用户名和密码
使用方法
- 查看目标windows服务器共享目录
#smbclient -L //10.12.0.1/ -Uadministrator
Password:
Domain=[MyServer-55D13420A0] OS=[Windows Server 2003 R2 3790 Service Pack 2] Server=[Windows Server 2003 R2 5.2]Sharename Type Comment
--------- ---- -------
IPC$ IPC ? IPC
C$ Disk 丐q?
ADMIN$ Disk ??
session request to 10.12.0.1 failed (Called name not present)
session request to 10 failed (Called name not present)
Domain=[MyServer-55D13420A0] OS=[Windows Server 2003 R2 3790 Service Pack 2] Server=[Windows Server 2003 R2 5.2]Server Comment
--------- -------Workgroup Master
--------- ------- - 连接目标windows服务器共享目录(windows安装完毕会开启驱动器的隐藏共享,需要管理员权限,访问路径是:盘符+$)
#smbclient //10.12.0.1/c$ -Uadministrator
Password: (输入正确的密码)
Domain=[MyServer-55D13420A0] OS=[Windows Server 2003 R2 3790 Service Pack 2] Server=[Windows Server 2003 R2 5.2]
smb: \>(出现提示符表示连接成功) - 上传文件
smb: \> put file1.rar (上传单个文件)
smb: \> mput file1.rar file2.rar (上传多个文件) - 下载文件
smb: \> get file1.rar (下载单个文件)
smb: \> mget file1.rar file2.rar (下载多个文件) - 改变远程共享目录
smb: \> cd doc (相对连接共享目录) - 使用账号权限连接,并自动执行命令
#smbclient //10.12.0.1/c$ -U administrator%password -c "put file1;quit" - 更多命令
? chmod get listconnect mget posix_mkdir pwd rename stat vuid
altname chown getfacl lock mkdir posix_open q reput symlink wdel
archive close hardlink logon more posix_rmdir queue rm tar
blocksize del help lowercase mput posix_unlink quit rmdir tarmode
cancel dir history ls newer print rd setmode translate
case_sensitive du lcd mask open prompt recurse showacls unlock
cd exit link md posix put reget showconnect volume - 退出
smb: \>quit
注意事项:
- 连接路径后必须要有已存在的共享目录
- 共享目录要有文件访问权限
- smbclient命令的参数要放在机器名后,否则会被当成服务器地址
- 文件传输完成后,要及时关闭windows系统的Server服务,保障系统安全