从Arch Linux Wiki 条目中收集,我认为是通过 SMB 从我的 Arch Linux 4.20.6 访问 Windows 共享驱动器的最小设置:
sudo pacman -S samba
sudo echo "logging = systemd" >> /etc/samba/smb.conf
因为smb
服务需要这个配置文件,否则它会因错误而崩溃:Job for smb.service failed because the control process exited with error code. See "systemctl status smb.service" and "journalctl -xe" for details.
sudo systemctl start smb
假设远程 Windows 机器位于172.16.17.52
,我可以列出共享名称
smbclient -L 172.16.17.52 -U MyUserName%MyPassword -W OurWindowsDomain
OurRemoteDirectory
其中包括我想访问的具有共享名称的“磁盘”类型的服务,即从它传输文件和向它传输文件。
希望能够OurRemoteDirectory
在共享驱动器上访问,我发出
smbclient 172.16.17.52/OurRemoteDirectory -U MyUserName%MyPassword -W OurWindowsDomain
但这产生了这个错误消息:
Unable to initialize messaging context
172.16.17.52: Not enough '\' characters in service
如何修复此错误并OurRemoteDirectory
在共享驱动器上访问?
要解决此问题,只需在 IP 地址前添加两个正斜杠:
让我失望的是错误消息建议我应该添加反斜杠
smbclient -L
,并且列出共享名称不需要在 IP 地址前面添加任何斜杠这一事实。现在我有一个用于访问远程文件系统的命令行界面:
建立连接后,
man smbclient
描述传输文件的命令,例如put
和get
。作为附言,由于 v7.40 也
curl
支持smb协议,这使得在您只想从共享驱动器传输文件或将文件传输到共享驱动器的情况下,samba
包含多余的包:smbclient
目前
curl
不支持创建远程目录,意思是Path/To/Dir/
必须已经存在。此处简要讨论该功能。