Ich möchte mit Python eine SSH-Verbindung (punlic key) zu einer anderen Maschine aufbauen und dort einige Kommandos ausführen. Das pexpect-Modul scheint genau dafür geschaffen zu sein, ich hab aber ein paar kleine Problemchen. Mein Code schaut bisher folgendermaßen aus:
Code: Alles auswählen
cmd = "ssh testmaschine.de"
child = pexpect.spawn(cmd)
child.expect("#", timeout=5)
child.sendline("uname -r")
child.expect("#", timeout=5)
print child.before
child.sendline("exit")
child.close()
Wenn ich dieses Python-Script aufrufe, schreibt er mir zunächst "uname -r" auf den Bildschirm und dann den Output von uname -r, also die Kernelversion auf der entfernten Maschine, danach sehe ich den Prompt der entfernten Maschine und dann wieder meinen lokalen Prompt. Danach ist die gesamte Schrift in meinem Gnome-Terminal komplett blau, da auf der entfernten Maschine der Prompt blau gesetz ist. Das ganze sieht in etwa so aus:
Code: Alles auswählen
LOCALPROMPT>python meinscript.py
uname -r
2.6.9-023-smp
REMOTEPROMPT>
LOCALPROMPT>
Was mich aber stört ist das "uname -r" auf dem Bildschirm geprintet wird und das ich den entfernten Prompt sehe ... sollte das nicht "im Hintergrund" geschehen? Ich will als einzige Ausgabe den Output von "uname -r" haben.
Ein zweites kleines Problem ist noch das ich ja nach jedem Kommando mit "child.expect(prompt) auf den Prompt warten muss - was mache ich aber wenn ich gar nicht weiß wie der Prompt auf der entfernten Maschine aussieht?
Vielen Dank für eure Hilfe!
Tom