服务中'\'字符不足

服务中'\'字符不足

拾取自Arch Linux 维基条目,我认为这是从我的 Arch Linux 4.20.6 通过 SMB 访问 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共享驱动器?

答案1

要解决此问题,只需添加两个向前IP 地址前有斜杠:

smbclient //172.16.17.52/OurRemoteDirectory -U MyUserName%MyPassword -W OurWindowsDomain

让我失望的是错误消息建议我应该添加落后斜杠,并且列出共享名称smbclient -L不需要在 IP 地址前面有任何斜杠。

现在我有一个用于访问远程文件系统的命令行界面:

中小企业:>

建立连接后,man smbclient描述用于传输文件的命令,例如putget


作为后记,从 v7.40 开始curl支持协议也是如此,如果您只想从共享驱动器传输文件或将文件传输到共享驱动器,则该samba包就变得多余了:smbclient

# Upload local file to shared drive
curl --upload-file /home/me/local_file.txt --user "OurWindowsDomain/MyUserName:MyPassword" smb://172.16.17.52/OurRemoteDirectory/Path/To/Dir/
# Download file from shared drive
curl -o file_from_server.txt --user "OurWindowsDomain/MyUserName:MyPassword" smb://172.16.17.52/OurRemoteDirectory/Path/To/Dir/remote_file.txt

目前,curl不支持创建远程目录,意味着Path/To/Dir/必须已经存在。简要讨论该功能这里

相关内容