Hallo zusammen,
vorab, ich bin ein vollkommener Python-newbie. Ich habe aber leider die Aufgabe, einige Skripte, die vorher unter 2.4 liefen in 2.6 zu portieren.
Nun zu meinem Problem:
Ich muss die Ausgabe eines ssh Remote-Befehls (z.B. cat /proc/meminfo), welches auf einem entfernten Rechner ausgefürht wird, auf dem aufrufenden Rechner als File speichern.
Unter 2.4 ging das über das Modul "cache" und dem Befehl 'cache.cachessh (filename,commando)'
Unter 2.6 finde ich eine solche Funktion nicht. Leider habe ich auch nichts vergleichbares gefunden.
Ich hoffe, es kann mir jemand helfen.
Vielen Dank schon mal.
myrpedder
Ausgabe ssh Remote-Befehl in Datei speichern
@myrpedder: So eine Funktion gibt es auch in der Standardbibliothek von Python 2.4 nicht. Wo kommt die her? Google findet für "cache.cachessh" keinen einzigen Treffer!?
Vielleicht wirst Du mal etwas konkreter was nicht geht!? Also welche Quelltextzeilen führen zu welchem Fehler?
Vielleicht wirst Du mal etwas konkreter was nicht geht!? Also welche Quelltextzeilen führen zu welchem Fehler?
Hallo Blackjack,
eigendlich ganz einfach. Ich möchte das Ergebnis, was z.B. als shellskript lauten würde:
ssh user@remote-ip 'cat /proc/meminfo'
auf dem aufrufenden Rechner als Datei speicher. Das ist es schon. Unter z.B. bash nicht schwerm, unter python für mich schon.
So weit bin ich schon:
In "ergebnis" steht jetzt schon das, was ich brauche. Jetzt "ergebnis" nur in einer Datei <filename> ablegen.
Aber vielen Dank für die schnelle Reaktion.
Gruß
myrpedder
eigendlich ganz einfach. Ich möchte das Ergebnis, was z.B. als shellskript lauten würde:
ssh user@remote-ip 'cat /proc/meminfo'
auf dem aufrufenden Rechner als Datei speicher. Das ist es schon. Unter z.B. bash nicht schwerm, unter python für mich schon.
So weit bin ich schon:
Code: Alles auswählen
cmd = sshvbspath + "/vbsssh " + sys.argv[1] + " \"cat /proc/loadavg /proc/stat /proc/meminfo\""
filename = datapath + "/python_cache/" + sys.argv[1] + "-stat.py.dat"
file = open (filename,'w')
ergebnis=os.system(cmd)
# --> ??? print ergebnis ???
file(close)
Aber vielen Dank für die schnelle Reaktion.
Gruß
myrpedder
Zuletzt geändert von Anonymous am Dienstag 29. Juni 2010, 09:42, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Grund: Quelltext in Python-Code-Tags gesetzt.
@myrpedder: Das geht mit `os.system` nicht. Dafür ist das `subprocess`-Modul gedacht.
Man kann in Python literale Zeichenketten in ' oder in " einfassen -- damit kann man sich Backslashes sparen wenn man die jeweils andere Sorte von Anführungszeichen innerhalb der Zeichenkette schreiben möchte.
Zum Zusammensetzen von Pfaden sollte man `os.path.join()` verwenden.
Man kann in Python literale Zeichenketten in ' oder in " einfassen -- damit kann man sich Backslashes sparen wenn man die jeweils andere Sorte von Anführungszeichen innerhalb der Zeichenkette schreiben möchte.
Zum Zusammensetzen von Pfaden sollte man `os.path.join()` verwenden.
- mkesper
- User
- Beiträge: 919
- Registriert: Montag 20. November 2006, 15:48
- Wohnort: formerly known as mkallas
- Kontaktdaten:
Eventuell ist es einfach, wenn du ein Modul wie Paramiko benutzt: http://www.lag.net/paramiko/docs/toc-pa ... odule.html
Mit subprocess ist das kein Problem:
-ungetestet-
//Edit: communicate liefert stdout als string zurück..
Code: Alles auswählen
from subprocess import Popen, PIPE
stdout, stderr = Popen([cmd, args], stdout=PIPE, stderr=PIPE).communicate()
print stdout
//Edit: communicate liefert stdout als string zurück..
the more they change the more they stay the same