2016-07-28 31 views
2

Ich versuche ein Skript auszuführen, das Putty ausführt und innerhalb des Putty-Terminals, das erstellt wird, einen Befehl ausführen. Ich konnte Putty von meinem Skript aus starten, indem ich das Python-Subprozessmodul mit check_call oder Popen benutze. Ich bin jedoch verwirrt, wie ich einen Befehl innerhalb des Sub-Prozesses Putty Terminal aus meinem Skript ausführen kann. Ich muss in der Lage sein, diesen Befehl in Putty auszuführen und seine Ausgabe auf dem Putty-Terminal zu analysieren. Danke für jede Hilfe.Wie führe ich einen Befehl innerhalb eines Subprozesses im Python-Skript aus?

+0

Was machst du mit Kitt? Es könnte eine bessere Idee sein, die Aufgabe direkt von einem Python-Skript aus auszuführen (um z. B. Remote-Befehle über SSH auszuführen, könnten Sie paramiko verwenden). –

+0

Ich bin nicht sicher, was Ihre Anforderungen sind, aber Sie können ssh und geben Sie Befehle gleichzeitig: 'ssh [email protected] 'ls-l; ps -aux; whoami'' mit mehr Infos [hier] (http://malcontentcomics.com/systemsboy/2006/07/send-remote-commands-via-ssh.html) – mitoRibo

Antwort

0

Sie müssen die stdin Argument PIPE und verwenden Sie die communicate Funktion von Popen einstellen Daten an stdin zu senden.

from subprocess import Popen, PIPE 

p = Popen('/the/command', stdin=PIPE, stdout=PIPE, stderr=PIPE) 
std_out, std_err = p.communicate('command to putty') 

Dass gesagt wird, kann es einfacher sein, eine Python-Bibliothek zu verwenden, die das ssh Protokoll implementiert (wie paramiko) anstatt durch Kitt gehen.

+1

Ich würde dies als 1 betrachten. Ein Link nur Antwort. 2. Nicht besonders hilfreich, da OP anscheinend bereits weiß, wie man mit 'Popen' ein externes Programm (' kitty') startet. Das Problem ist nicht 'kitty' zu öffnen, das Problem ist 'kitty' zu tun, was OP will, sobald es geöffnet ist ... – mgilson