Rene K. schrieb:
Yalu X. schrieb:
lines = varOut.readlines()
lines ist dann ein Array aller Zeilen.
Ahhh wunderbar! Genau das was ich gesucht habe. Danke dir vielmals!
Ja, also, äh... hüstel Das löst zwar kurzfristig Dein Problem, ist aber mit modernen Python-Interpretern nicht so richtig elegant. Mit dem Modul "subprocess" [1] hast Du wesentlich mehr Kontrolle über Deinen Prozeß, inklusive:
- konfigurierbare Ein- und Ausgabe(n) des Subprozesses in einem oder zwei
io.TextIOWrapper oder io.BytesIOWrapper mit en- und decoding
- Timeout für den Subprozeß
- Angabe des Environment für den Subprozeß
- Kontrolle des Rückgabewertes
...und so weiter, das gerade Aufgezählte betrifft lediglich die Funktion "subprocess.run()". Mit der Klasse "subprocess.Popen" hast Du sogar noch genauere Kontrolle über den Subprozess und seine Interaktion mit Python, damit kannst Du den Subprozess sogar im Hintergrund starten und dann die Ausgaben pollen und verarbeiten, während er noch läuft.
Um Unfälle und Fehleranfälligkeiten zu vermeiden, bietet sich im Übrigen das Modul "shlex" an, das Deine Kommandozeile in einen sauber gequotetes und escapetes Array umwandelt. Damit wird es für fiese Mistfinken schwer, Deinem Subprozess irgendwelche bösen Ferkeleien unterzujubeln.
Wenn Du Deinen Subprozess nicht lokal, sondern remote auf einer Maschine ausführen willst, auf die Du mit SSH zugreifen kannst, lohnt sich sicher auch ein Blick auf fabric2 [3, 4], das genau dieses macht -- mit Optionen zur Privilegienerweiterung via sudo(1) und allem Pipapo.
Viel Spaß und Erfolg!
[1] https://docs.python.org/3/library/subprocess.html
[2] https://docs.python.org/3/library/shlex.html
[3] https://www.fabfile.org/
[4] https://docs.fabfile.org/en/stable/index.html