私は次のようにssh上で直接Pythonスクリプトを実行しようとしています:
ssh hostname python_script
残念ながら、Pythonの起動後は何も起こりません。実際、リモートで作成されたPythonプロセスは、SSHから切断した後も「生きた」ままです。Pythonインタープリターを起動しようとしても同じことが起こりますが、他のコマンドは正常に機能します。
試してみてくださいssh -t hostname python_script
。デフォルトでssh
は、実行するプログラムが与えられたときに対話するための疑似ttyを割り当てません(ただし、実行するだけの場合は割り当てますssh hostname
)。-t
そうするように指示します。
ssh-tは良い提案です。
また、コードにprintステートメント/関数を散りばめたり、/ var / tmpなどのファイルに書き込んで、その動作を確認することもできます。
プロセスが実行していることを確認する別の方法は、Linuxのstraceのようなものを使用することです: http ://stromberg.dnsalias.org/~strombrg/debugging-with-syscall-tracers.html
例:ssh remote.host.com'strace -f-o/var/tmp/my_script.stracemy_script'。次に、/ var / tmp / my_script.straceを調べて、何がスタックしているかを確認します。strace出力の読み取りは必ずしも簡単ではありませんが、少なくとも興味深いものです。:)
SSHは、Pythonスクリプトの実行で問題を引き起こすことはありません。一般に、注意すべき点は、環境変数の変化と、標準の入出力に対する期待です。これらは、説明したものと同様の症状を引き起こす可能性があるためです。スクリプトを実行していない場合、Pythonはstdin / stdoutと対話できると想定しているため、Pythonを直接実行するとハングします。
基本環境が機能していることをテストする簡単な方法は、以下を含むテストプログラム(test.py)を作成することです。
print "foo"
それから
ssh hostname python test.py
応答として「foo」を取得する必要があります。