Shell-Rückgabewerte verarbeiten

Hallo Liste,
ich bin erst vor kurzem zu Python gestoßen und bekomme ein Prob nicht gebacken:
Ich möchte den Shell-Befehl "dcfldd if=/dev/hda hash=md5,sha1 of=/mnt/sicherung.dd" ausführen. dcfldd gibt nach Beendigung die Hashwerte md5 und sha1 von hda aus. Diese Werte würde ich ganz gern weiterverabeiten. Wie komme ich an die Werte ran?
Ein weiteres Problem besteht darin, dass dcfldd weiterhin angezeigen soll, wieviele Daten bereits kopiert worden sind. Das Salz in der Suppe wäre natürlich, wenn ich auch die Werte der Fortschrittsanzeige abfangen könnte, um diese in ein Gauge einbinden zu können.
Derzeit verwende ich Python 2.3.5 auf einem Debian System.
Mit freundlichen Grüßen Dennis
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

--On 8. Dezember 2005 19:58:10 +0100 "D. Schreiber" dschreiber@arcor.de wrote:
Hallo Liste,
ich bin erst vor kurzem zu Python gestoßen und bekomme ein Prob nicht gebacken:
Ich möchte den Shell-Befehl "dcfldd if=/dev/hda hash=md5,sha1 of=/mnt/sicherung.dd" ausführen. dcfldd gibt nach Beendigung die Hashwerte md5 und sha1 von hda aus. Diese Werte würde ich ganz gern weiterverabeiten. Wie komme ich an die Werte ran?
es gibt mehrere Möglichkeiten:
os.system() commands.getstatusoutput() os.popen() process.Popen()
Näheres findest Du u.a. in der Python Library Reference.
-aj
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de

On Thu, Dec 08, 2005 at 07:58:10PM +0100, D. Schreiber wrote:
Hallo Liste,
ich bin erst vor kurzem zu Python gestoßen und bekomme ein Prob nicht gebacken:
Ich möchte den Shell-Befehl "dcfldd if=/dev/hda hash=md5,sha1 of=/mnt/sicherung.dd" ausführen. dcfldd gibt nach Beendigung die Hashwerte md5 und sha1 von hda aus. Diese Werte würde ich ganz gern weiterverabeiten. Wie komme ich an die Werte ran?
Hallo,
Mit os.popen4() bekommst du einen Filedescriptor und den kannst du auslesen. Ob das Auslesen der Statusanzeige klappt weiß ich nicht. Oft schreiben die Programme nur einen Statusbar (wie zB bei scp), wenn sie mit einem Terminal verbunden sind.
Gruß, Thomas

Hallo,
Ich möchte den Shell-Befehl "dcfldd if=/dev/hda hash=md5,sha1 of=/mnt/sicherung.dd" ausführen. dcfldd gibt nach Beendigung die Hashwerte md5 und sha1 von hda aus. Diese Werte würde ich ganz gern weiterverabeiten. Wie komme ich an die Werte ran?
Mit os.popen4() bekommst du einen Filedescriptor und den kannst du auslesen. Ob das Auslesen der Statusanzeige klappt weiß ich nicht. Oft schreiben die Programme nur einen Statusbar (wie zB bei scp), wenn sie mit einem Terminal verbunden sind.
Habe jetzt verschieden Sachen ausprobiert, hatte aber nicht wirklich Erfolg. Mit Hilfe des Filedescriptor kann ich zwar auf die Ausgabe des Befehls zugreifen, ist aber nicht befriedigend. Wenn ich per readline(s) auf die Datei zugreife, wartet python scheinbar bis der Befehl abgearbeitet ist. Ich könnte mir vorstellen, in einer Schleife den Status der Befehlsverarbeitung abzufragen und ähnlich tail die Änderung der Ausgabe mit Hilfe des Filedescriptor abzufangen. Ist sowas möglich? Wenn ja, wie? Für Codeschnipsel wäre ich dankbar.
Gruß Dennis
_______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (3)
-
Andreas Jung
-
D. Schreiber
-
guettli@thomas-guettler.de