Ich möchte mit einem Datenlogger über Telnet kommunizieren. Deshalb schrieb ich den folgenden Python-Skript:Schließen Plink-Fenster mit Python
import subprocess
command ='plink.exe -telnet -P 23 12.17.46.06'
p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1, shell=False)
answer = p.communicate('command')[0]
print answer
Durch das Skript ausgeführt wird, ein Plink-Fenster erscheint. Das Python-Skript scheint auf eine Aktion im Befehlsfenster von plink zu warten. Durch das manuelle Schließen des Fensters wird die gewünschte "Antwort" in Python angezeigt.
Ich bin auf der Suche nach einem Befehl/Prozedur zum Schließen von Plink direkt aus Python. Es scheint nicht ausreichend zu sein, den Subprozess zu schließen, da in diesem Fall nur die Kommunikation zwischen python und plink geschlossen wird und nicht das Programm plink.exe selbst.
Jede Hilfe wird geschätzt! Grüße, Phil
Danke für die Klarstellung bezüglich des communic() - Befehls. Die Frage bleibt jedoch, wie man Plink direkt von Python beenden kann. Das Python-Skript läuft unter Windows 7 64-Bit. –
Ihre Frage ist ein [XY Problem] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Plink wird beendet, wenn die Verbindung geschlossen wird. Woher willst du wissen * wann * um es zu töten? Sie können es töten, wenn Sie möchten, indem Sie ['.kill()'] (https://docs.python.org/3/library/subprocess.html#subprocess.Popen.kill) aufrufen. Natürlich kann Ihr Programm nichts tun, während es blockiert ist, bis der Prozess beendet wird. Sie möchten entweder Multithreading lernen (was ohne Bugs sehr schwierig ist) oder ein Timeout für die Kommunikation() bereitstellen oder einen nicht blockierenden Ansatz für die Verwaltung der Pipe verwenden. – dsh
Okay, dann muss ich mein Problem neu formulieren: Wie kann ich die von plink ** mit Python ** hergestellte Telnet-Verbindung beenden? Ihr Vorschlag bezüglich einer Auszeit wäre für mich ausreichend. Wie ich bereits erwähnt habe, kann ich die Verbindung von Python zu Plink beenden, aber nicht die Telnet-Verbindung von Plink selbst. –