Seite 1 von 1

os.system und stdout capturn

Verfasst: Donnerstag 24. Januar 2008, 22:53
von pythondude
Hallo,

ich habe eine Frage an die Experten in diesem Forum. Bin nicht unbedingt ein Neuling in python so hatte ich heute aber leicht verständnisprobleme...

Folgendes:

os.system("ssh root@172.25.107.155 'cd $PTI_BIN_DIR ; ./commstats'")

dieser Aufruf schreibt etwas auf die stdout. Ich möchte den output capturen und lesen...

Nun dachte ich folgendes:

old_stdout = sys.stdout

sys.stdout = open("ep_health.txt", "w")

os.system("ssh root@172.25.107.155 'cd $PTI_BIN_DIR ; ./commstats'")

sys.stdout = old_stdout

Das file bleibt leer.

Hm? Wer macht mich schlau?

pythondude

Verfasst: Donnerstag 24. Januar 2008, 22:56
von BlackJack
`sys.stdout` ist ein Python-Objekt, davon wissen externe Prozesse nichts.

Schau mal das `subprocess`-Modul an, damit sollte es gehen.

Verfasst: Freitag 25. Januar 2008, 23:45
von Keanuf
Hallo pythondude,

ich weis nicht was du vor hast,
aber wenn du auf einen anderen Rechner was ausführen willst und das auch mit schreiben, dann kann ich dir dieses hier empfehlen
http://pexpect.sourceforge.net/

Oder im os Modul popen1, oder 2, oder 3 verwenden

je nachdem kannst du die verschiedenen Ausgabe Kanäle abfangen.

Beispiel:

Code: Alles auswählen

import os
stdin, stdout = os.popen2("ls -la")
print stdout.read()

Verfasst: Samstag 26. Januar 2008, 00:08
von BlackJack
Das `subprocess`-Modul soll die ganzen `popen*()`-Funktionen ablösen.

Verfasst: Samstag 26. Januar 2008, 11:14
von Leonidas
Wobei ich mir nicht sicher bin, ob man für die Fernsteuerung von SSH nicht zufällig noch ptys braucht.

Verfasst: Samstag 26. Januar 2008, 13:12
von lunar
Leonidas hat geschrieben:Wobei ich mir nicht sicher bin, ob man für die Fernsteuerung von SSH nicht zufällig noch ptys braucht.
Nur, wenn man die Passworteingabe automatisieren will. Das ist das einzige, was ssh direkt von tty liest. Der Rest läuft ganz normal über die Standardstreams. Aber wer nutzt schon SSH mit Passwörtern?

Verfasst: Sonntag 27. Januar 2008, 10:48
von Keanuf
@Blackjack Danke da hab ich mal wieder was gelernt :wink: