smbclient 从 Linux 复制到 Windows (SMB)

smbclient 从 Linux 复制到 Windows (SMB)

想要使用 shell 脚本将目录从 Linux 机器复制到 Windows (SMB)。

[user@host home]$ smbclient -W WORKGROUP --user='admin%admin$123' -c "put /data/directory" "//192.168.1.1/share"
Domain=[mydomain] OS=[Windows Server] Server=[Windows Server]
/data/directory does not exist
[user@host home]$ cd /data/directory
/data/directory
[user@host directory]$ ll
File1
File2
..

这是问题:

  • 即使我使用 ( -N)也不接受密码

  • 甚至尝试这个--user=admin%admin$123

当我从命令中删除密码并且 shell 询问我密码时,它起作用了!

仅供参考:为了在Windows和Linux之间传输目录,我读到了关于curl和Windows上的scp的SSH守护进程,您有什么建议或简单的方法,而不需要Windows上的额外服务或Linux上的软件包?

答案1

如果您想/data/directory在 Linux 上进行复制,以便其副本像\\192.168.1.1\share\directory在 Windows 上一样显示,那么也许这个命令应该可以完成这项工作:

smbclient -W WORKGROUP --user='admin%admin$123' -c "lcd /data;recurse;mput directory" "//192.168.1.1/share"

理由:

  • 要复制目录及其内容,您需要启用递归recurse并使用,mput因为您将复制多个文件。常规put命令只会传输一个文件一次,可以选择在目的地为副本指定不同的名称。
  • 通过第一次使用lcd,递归受到限制,因此副本不会变成\\192.168.1.1\share\data\directory,而只是\\192.168.1.1\share\directory

相关内容