サブプロセスモジュールを使用して、sshを介して生成されたプロセスを制御したいとします。検索することによりサブプロセスの出力を抑制する
と私はこれが機能することを見つけテスト:
import subprocess
import os
import time
node = '[email protected]'
my_cmd = ['sleep','1000']
devnull = open(os.devnull, 'wb')
cmd = ['ssh', '-t', '-t', node] + my_cmd
p = subprocess.Popen(cmd, stderr=devnull, stdout=devnull)
while True:
time.sleep(1)
print 'Normal output'
私が提供-t -tオプションは私だけではなく、sshコマンドのリモートプロセスを終了させることができます。しかしこれは、改行がもはや効果的でなく、文字列を読みにくいようにするので、私のプログラムの出力をスクランブルします。
sshをpythonプログラムのフォーマットに影響させないようにするにはどうすればよいですか?
出力例:
guest:~$ python2 test.py
Normal output
Normal output
Normal output
Normal output
Normal output
Normal output
Normal output
(First ctrl-c)
Normal output
Normal output
Normal output
(Second ctrl-c)
^CTraceback (most recent call last):
File "test.py", line 13, in <module>
time.sleep(1)
KeyboardInterrupt
サンプル出力を提供できますか?それが "スクランブリング"を意味するかどうかは不明です。 – SuperBiasedMan
stackoverflowはすべてを揃えます。ラインを変更した後、出力はターミナルの開始にアライメントされません。メッセージは正しく印刷されています。 –
もし私がctrl-cして私の端末に戻ってきたら、Enterを押すと、コマンドラインは新しい行ではなく、前の行の隣に表示されます。 sshの-t -tオプションと何か –