Smbclient
服務中沒有足夠的“”字元
從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
描述傳輸文件的命令,例如put
和get
。作為附言,由於 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/
必須已經存在。此處簡要討論該功能。