3

私は次のようにssh上で直接Pythonスクリプトを実行しようとしています:

ssh hostname python_script

残念ながら、Pythonの起動後は何も起こりません。実際、リモートで作成されたPythonプロセスは、SSHから切断した後も「生きた」ままです。Pythonインタープリターを起動しようとしても同じことが起こりますが、他のコマンドは正常に機能します。

4

3 に答える 3

7

試してみてくださいssh -t hostname python_script。デフォルトでsshは、実行するプログラムが与えられたときに対話するための疑似ttyを割り当てません(ただし、実行するだけの場合は割り当てますssh hostname)。-tそうするように指示します。

于 2012-08-16T17:37:25.140 に答える
1

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出力の読み取りは必ずしも簡単ではありませんが、少なくとも興味深いものです。:)

于 2012-08-16T18:35:21.420 に答える
0

SSHは、Pythonスクリプトの実行で問題を引き起こすことはありません。一般に、注意すべき点は、環境変数の変化と、標準の入出力に対する期待です。これらは、説明したものと同様の症状を引き起こす可能性があるためです。スクリプトを実行していない場合、Pythonはstdin / stdoutと対話できると想定しているため、Pythonを直接実行するとハングします。

基本環境が機能していることをテストする簡単な方法は、以下を含むテストプログラム(test.py)を作成することです。

print "foo"

それから

ssh hostname python test.py

応答として「foo」を取得する必要があります。

于 2012-08-16T17:16:33.097 に答える