web-dev-qa-db-ja.com

サービスに十分な「\」文字がありません

Arch Linux Wikiエントリ からすくみ、SMB私のArch Linux 4.20.6から)を介してWindows共有ドライブにアクセスするための最小限の設定だと思います。

  • Sudo pacman -Sy samba
  • Sudo echo "logging = systemd" >> /etc/samba/smb.confsmbサービスにはこの構成ファイルが必要なため、それ以外の場合は次のエラーでクラッシュします。

    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にアクセスするにはどうすればよいですか?

2
Matthias Braun

これを修正するには、IPアドレスの前に2つのforwardスラッシュを追加します。

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

私を驚かせたのは、backwardスラッシュを追加する必要があることを示唆するエラーメッセージと、リストの共有名がsmbclient -Lは、IPアドレスの前にスラッシュを必要としません。

これで、リモートファイルシステムにアクセスするためのコマンドラインインターフェイスができました。

smb:>

接続を確立すると、 man smbclient は、putgetなどのファイルを転送するためのコマンドについて説明しています。


ポストスクリプトとして、v7.40以降 curlsmb プロトコルもサポートするため、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/はすでに存在している必要があります。機能について簡単に説明します ここ

1
Matthias Braun