Python Rohrleitungen Ausgang zwischen zwei Teilprozesse
Arbeite ich an etwas code, dass DD ein block-Gerät über SSH, und ich bin zu wollen tun Sie dies mit Unterprozess, so dass ich können den status von DD während der übertragung (die Tötung der dd-Prozess mit SIGUSR1 um seinen aktuellen Zustand und zu Lesen, dass die Verwendung auswählt).
Den Befehl, den ich bin versucht zu implementieren wäre so etwas wie dieses:
dd if=/dev/sda | ssh root@example.com 'dd of=/dev/sda'
Die aktuelle Methode, die ich versuchte, war:
dd_process = subprocess.Popen(['dd','if=/dev/sda'],0,None,None,subprocess.PIPE, subprocess.PIPE)
ssh_process = subprocess.Popen(['ssh','[email protected]','dd of=/dev/sda'],0,None,dd_process.stdout)
Allerdings wenn ich diesen Befehl ausgeführt, der SSH-Prozess außer Kraft gesetzt wird nach 10-40 Sekunden.
Bin ich völlig stumpf da, oder gibt es keine Möglichkeit, die Pipeline zwischen Teilprozesse wie diese?
Edit: Stellt sich heraus, mein echter code, nicht den Hostnamen in es. Dies ist der richtige Weg, Dinge zu tun.
- Ich hoffe, dass Sie mit key-basierten Authentifizierung oder anderen nicht-interaktiven Mechanismus.
- Natürlich 😉 ich habe nur die ssh-argument aus, um das Beispiel zu verkürzen
- Verwandte: Wie benutze ich Teilprozess.Popen Verbindung mehrerer Prozesse, die durch Rohre?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist der Weg zur LEITUNG der ersten Prozess-Ausgangsdaten auf den zweiten. (beachten Sie, stdin in der ssh_process)
grep_process
?!Den sh Python-Bibliothek, die es leicht macht, rufen Sie OS-Befehle und-Rohr Sie.
Aus der Dokumentation:
sh
Modul ist wirklich nett. Vielen Dank für das teilen.