Smbclient

服務中沒有足夠的“”字元

  • October 19, 2021

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 //172.16.17.52/OurRemoteDirectory -U MyUserName%MyPassword -W OurWindowsDomain

讓我失望的是錯誤消息建議我應該添加反斜杠smbclient -L,並且列出共享名稱不需要在 IP 地址前面添加任何斜杠這一事實。

現在我有一個用於訪問遠端文件系統的命令行界面:

smb: >

建立連接後,man smbclient描述傳輸文件的命令,例如putget


作為附言,由於 v7.40 也curl支持smb協議,這使得在您只想將文件從共享驅動器傳輸到共享驅動器的情況下,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/必須已經存在。此處簡要討論該功能。

引用自:https://unix.stackexchange.com/questions/498585