Seite 1 von 1
Ausgabe ssh Remote-Befehl in Datei speichern
Verfasst: Dienstag 29. Juni 2010, 08:26
von myrpedder
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
Re: Ausgabe ssh Remote-Befehl in Datei speichern
Verfasst: Dienstag 29. Juni 2010, 09:03
von BlackJack
@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?
Re: Ausgabe ssh Remote-Befehl in Datei speichern
Verfasst: Dienstag 29. Juni 2010, 09:25
von myrpedder
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:
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)
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
Re: Ausgabe ssh Remote-Befehl in Datei speichern
Verfasst: Dienstag 29. Juni 2010, 09:40
von BlackJack
@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.
Re: Ausgabe ssh Remote-Befehl in Datei speichern
Verfasst: Dienstag 29. Juni 2010, 09:45
von mkesper
Eventuell ist es einfach, wenn du ein Modul wie Paramiko benutzt:
http://www.lag.net/paramiko/docs/toc-pa ... odule.html
Re: Ausgabe ssh Remote-Befehl in Datei speichern
Verfasst: Dienstag 29. Juni 2010, 15:31
von Dav1d
Mit subprocess ist das kein Problem:
Code: Alles auswählen
from subprocess import Popen, PIPE
stdout, stderr = Popen([cmd, args], stdout=PIPE, stderr=PIPE).communicate()
print stdout
-ungetestet-
//Edit: communicate liefert stdout als string zurück..
Re: Ausgabe ssh Remote-Befehl in Datei speichern
Verfasst: Mittwoch 30. Juni 2010, 08:25
von myrpedder
Vielen Dank,
ich habe das Problem jetzt gelöst.
Gruß
Myrpedder