Beim Ausführen eines Befehls über fabric.api.run, wie erhalte ich die Ausgabe von nur den Befehl, den ich auf dem Remote-Server ausgeführt habe?Überschüssige Ausgabe von fabric.api.run
Alle Ausgaben, die aus der Datei bash_profile des Systems resultieren, werden ebenfalls von der Fabric-Ausgabe erfasst.
Nicht genau, was in diesem Fall zu tun ist.
from fabric.api import env, run
env.host_string = "hostname"
def run_a_thing():
output = run("find /some/files/somewhere")
return output
the_files_I_want = run_a_thing()
the_files_I_want
[hostname] run: find /some/files/somewhere
**[hostname] out: Module slurm/15.08.1 loaded**
**[hostname] out:**
[hostname] out: file1...
[hostname] out: file2...
Die unerwünschte Ausgabe ist die markierten Zeilen oben. Die Module werden automatisch von den Administratoren geladen (in diesem Fall slurm), und die Ausgabe des Modulladebefehls erscheint mit der Ausgabe des Befehls, den ich auszuführen versuche.
Mit output.stdout, da Ausgabe ist eigentlich eine Wrapper-Klasse, funktioniert nicht. Es gibt genau dasselbe zurück, da dies alles stdout ist.
Also, Ideen, dieses spezifische Problem zu beheben, Ideen für eine Problemumgehung? So
Dank