web-dev-qa-db-ja.com

スペースを使用してリモートsshコマンドを実行していますか?

Windowsでsshを介してリモートスクリプトを実行しようとしていますが、引用符の処理方法がわかりません。 (ホストとクライアントはどちらもWindowsマシンです。)これは、ホストマシンで正常に機能するステートメントです。

C:\> python "C:\folder path\file.py"

私は一見どこにでも見えて、一見すべてを試しましたが、これを機能させることができません:

C:\> ssh user@ipaddress "python ""C:\folder path\file.py"""
python: can't open file 'C:\folder': [Errno 2] No such file or directory

二重引用符を使用してみました、一重引用符を試しました、エスケープ文字として「\」を試しました、「^」を試しましたが、文字列を正しく渡さないようです。何か助けがありますか?

編集:ユーザーは、パスを追跡するためにsshで「-v」を使用することを提案しました。そうすることで、二重引用符は実際に私が期待することを実行しているように見えますが、どういうわけか、ホストマシンはコマンドを誤って解釈し、スペースにオブジェクトを送信します。理由がわからない...

明確にするために、これを使用して:

C:\> ssh -v user@ipaddress "python ""C:\folder path\file.py"""

結果にこれが表示されます。

debug1: Sending command: python "C:\folder path\file.py"
python: can't open file 'C:\folder': [Errno 2] No such file or directory

繰り返しますが、より明確にするために、このコマンドは、私が物理的にホストマシンにいるときに完全に機能します。

C:\> python "C:\folder path\file.py"

だから、なぜ/どこでこれが台無しになっているのかわかりません。助けてくれてありがとう、皆さんはこれまでに非常に助けてくれました。

1
lukehawk

パスではなくサービスに関連していましたが、これは私にとってはうまくいきました。

ssh username@ipaddress 'net start \"TightVNC Server\"'
3

OpenSSH sshは* nixアプリケーションであるため、コマンドラインを解析するときに* nixルールが適用されます

ssh user@ipaddress "python \"C:\folder path\file.py\""
1
Martin Prikryl