Ich möchte das Unterprozessmodul verwenden, um einige über ssh erzeugte Prozesse zu steuern.Ausgabe des Unterprozesses unterdrücken
Durch die Suche und Prüfung fand ich, dass dies funktioniert:
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'
Die -t Option -t Ich stelle mir erlaubt, nur den Befehl ssh anstelle des Remote-Prozess zu beenden. Aber das verwirrt auch meine Programmausgabe, da Zeilenumbrüche nicht mehr effektiv sind, was es zu einer langen und schwer zu lesenden Zeichenfolge macht.
Wie kann ich machen, dass ssh die Formatierung des Python-Programms nicht beeinflusst?
Beispielausgabe:
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
Können Sie eine Beispielausgabe bereitstellen? Es ist unklar, was du damit meinst "scrambling". – SuperBiasedMan
stackoverflow wird alles ausrichten. Der Ausgang wird nach dem Zeilenwechsel nicht auf den Anfang des Terminals ausgerichtet. Die Nachrichten werden jedoch korrekt gedruckt. –
auch wenn ich ctrl-c und gehe zurück zu meinem Terminal, durch Drücken der Enter-Zeile wird nicht in der neuen Zeile, sondern neben meiner vorherigen Zeile gedruckt. Etwas mit der Option -t -t in ssh zu tun. –