os.system und stdout capturn

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pythondude
User
Beiträge: 1
Registriert: Donnerstag 24. Januar 2008, 22:47
Wohnort: Düsseldorf

Donnerstag 24. Januar 2008, 22:53

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
BlackJack

Donnerstag 24. Januar 2008, 22:56

`sys.stdout` ist ein Python-Objekt, davon wissen externe Prozesse nichts.

Schau mal das `subprocess`-Modul an, damit sollte es gehen.
Keanuf
User
Beiträge: 39
Registriert: Freitag 3. Oktober 2003, 00:03
Kontaktdaten:

Freitag 25. Januar 2008, 23:45

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()
BlackJack

Samstag 26. Januar 2008, 00:08

Das `subprocess`-Modul soll die ganzen `popen*()`-Funktionen ablösen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 26. Januar 2008, 11:14

Wobei ich mir nicht sicher bin, ob man für die Fernsteuerung von SSH nicht zufällig noch ptys braucht.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Samstag 26. Januar 2008, 13:12

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?
Keanuf
User
Beiträge: 39
Registriert: Freitag 3. Oktober 2003, 00:03
Kontaktdaten:

Sonntag 27. Januar 2008, 10:48

@Blackjack Danke da hab ich mal wieder was gelernt :wink:
Antworten