SSHを介してリモートファイルシステムを使用するためにCで自動化APIを作成しています。
ホストコンピュータはUbuntu-Linuxを実行し、ターゲットコンピュータの1つはOpenSSHがインストールされているWindows 7を実行します。
私が経験している特定の機能は、リモートのWindowsシステムにファイルを一覧表示することです。特に名前にスペースが含まれているファイルとフォルダはさらにそうです。例:「プーバ」
私のコマンドの形式は次のとおりです。
sshpass -p [pwd] ssh [account]@[ip_addr] dir PATH
私がするなら:
sshpass -p [pwd] ssh -v [account]@[ip_addr] dir C:\"FOO BAR"
詳細情報を表示(-v)オプションを使用すると、次の応答が表示されます(スニペット)。
debug1: Sending command: dir C:"Foo BAR
Volume in drive C has no label.
...
File Not Found
私がするなら:
sshpass -p [pwd] ssh -v [account]@[ip_addr] dir C:\\\"FOO BAR\"
次を返します。
debug1: Sending command: dir C:\\"FOO BAR"
Volume in drive C has no labe.
...
File Not Found
オートメーションで実行すると、次のものが返されます。
sh: 1: Syntax error: Unterminated quoted string
私のAPIは、間にスペースがないファイル名に適しています。 Windowsシステムにコマンドを送信することに制限があるようです。この問題を解決する方法についてのアイデアはありますか?
ありがとうございます!
11/14アップデート:
返信ありがとうございます。歩行者!私はこのSSHFSについてよく知りません。まず試してみてください。
提供したリンクをたどると、この手順で次のことができます。
sudo sshfs -o allow_other,defer_permissions [email protected]:/ /mnt/droplet
次のエラーが発生します。
fuse: unknown option `defer_permissions`
Googleに連絡した後、次のように変更しました。
sudo sshfs -o allow_other,default_permissions [email protected]:/ /mnt/droplet
そのうち、次のエラーが発生しました。
read: Connection reset by peer
私はこれに従いましたピアが sshfs を使用して接続をリセットするそしてそうでした:
sudo usermod -a -G fuse [my_user_name]
しかし、まだ同じ問題があります。どんなアイデアがありますか?
答え1
引用の問題を回避するには、パラメータをbase64に渡してLinuxサーバーからデコードできます。
しかし、SSHFSが存在する場所に独自のAPIを作成するのはなぜですか?サポートが必要な場合は、下記のリンクをご覧ください。