利用smbclient实现操作windows共享文件

时间:2024-03-08 21:35:34

      当安装好一台windows服务器,需要将一些文件上传到这个操作系统,而本网段只有linux操作系统时,我们可以想到的方法可能有两种:

  1. 使用远程桌面挂载本地硬盘
  2. 通过ssh服务进行传输

      但有些时候,这台windows的操作系统不是通过pxe定制过的,同时远程桌面连接是跨国家的,因此受制于对方没有ssh服务或者网络速度过慢影响。当需要传输一个大文件时,只能依靠远程桌面挂载本地硬盘;当经历了漫长的等待后,传送完99%,系统通知找不到路径!崩溃吧,然后不得不将命运再次交给网络。。。。

      那么,有没有更好的方法?答案是肯定的,而且不仅很多种。这里向大家介绍一种常被忽略的方法:

              将文件转义到本地区网络内,再使用smbclient将文件上传到目标windows服务器

      使用条件:

  1. windows服务器开启Server服务,对外提供共享服务
  2. 源文件服务器安装smbclient,一般默认安装
  3. 访问windows共享目录的权限:用户名和密码

     使用方法

  1. 查看目标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
    --------- -------

  2. 连接目标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: \>(出现提示符表示连接成功)
  3. 上传文件
    smb: \> put file1.rar (上传单个文件)
    smb: \> mput file1.rar file2.rar (上传多个文件)
  4. 下载文件
    smb: \> get file1.rar (下载单个文件)
    smb: \> mget file1.rar file2.rar (下载多个文件)
  5. 改变远程共享目录
    smb: \> cd doc (相对连接共享目录)
  6. 使用账号权限连接,并自动执行命令
    #smbclient //10.12.0.1/c$ -U administrator%password -c "put file1;quit"
  7. 更多命令

    ? 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

  8. 退出
    smb: \>quit

      注意事项:

  1. 连接路径后必须要有已存在的共享目录
  2. 共享目录要有文件访问权限
  3. smbclient命令的参数要放在机器名后,否则会被当成服务器地址
  4. 文件传输完成后,要及时关闭windows系统的Server服务,保障系统安全