2016-12-27 2 views
0

Wenn ich:Stoff run() ausgegeben wird Schmutz

out = run("ls") 

ich in "out" Liste der Dateien möchten. Aber ich bekomme auch Müll. Wie bekomme ich nur den Shell-Befehl?

$ fab -p 111 -H server func 
[server] Executing task 'func' 
[server] run: ls 
[server] out: 
[server] out: 
[server] out: MQSI 9.0.0.3 
[server] out: /opt/IBM/mqsi/9.0.0.3 
[server] out: 
[server] out: /var/mqsi/odbc/odbc64.ini 
[server] out: file1 file2 file3 
[server] out: 

MQSI 9.0.0.3 
/opt/IBM/mqsi/9.0.0.3 

/var/mqsi/odbc/odbc64.ini 
file1 file2 file3 

So in out bekomme ich alle Texte von MQSI zu file3. Aber ich brauche nur file1 file2 file3

Wahrscheinlich ist es nicht Fabric-Fehler. Vielleicht etwas mit Server Shell.

Ich habe sehr versucht, verschiedene Stoff versteckt, aber nicht die Antwort gefunden.

+0

Wie meinen Sie das „get trash“? – joeb

+0

@joeb Ich modifizierte Antwort. Unter Müll bedeuten i MQSI 9.0.0.3 /opt/IBM/mqsi/9.0.0.3 /var/mqsi/odbc/odbc64.ini – igor

+0

Jetzt sehe ich nur eine Möglichkeit, dieses Problem zu vermeiden. Verwende out = run ("echo" start '&& ls ") out = out [out.index (' start ') + 1:]' – igor

Antwort

0

Wenn ich richtig verstanden habe, beziehen Sie sich mit "Trash" auf die Zeichen "\ t", "\ r" und "\ n" in der Ausgabe des Befehls ls. Ein Beispiel, das ich gerade erzeugt sieht wie folgt aus:

>>>> out = run('ls') 
>>>> print(out) 
'nginx\t\t\t\tnginx.bak.20151206-2209.tar.gz\tnginx.bak.20151206-2258.tar.gz\tphp-fpm.conf.save\r\nnginx.bak.20151206-2047.tar.gz\r\nnginx.bak.20151206-2153.tar.gz\tnginx.bak.20151206-2226.tar.gz\tphp-fpm.conf\t\t\tsupervisord.conf\r\nnginx.bak.20151206-2206.tar.gz\tnginx.bak.20151206-2255.tar.gz\tphp-fpm.conf.default\t\tvarnish' 

Um das in eine Liste zu drehen, können Sie es .split(), wie:

>>> out.split() 
['nginx', 'nginx.bak.20151206-2209.tar.gz', 'nginx.bak.20151206-2258.tar.gz', 'php-fpm.conf.save', 'nginx.bak.20151206-2047.tar.gz', 'nginx.bak.20151206-2153.tar.gz', 'nginx.bak.20151206-2226.tar.gz', 'php-fpm.conf', 'supervisord.conf', 'nginx.bak.20151206-2206.tar.gz', 'nginx.bak.20151206-2255.tar.gz', 'php-fpm.conf.default', 'varnish'] 
+0

Ich brauche den Text von der Shell nicht, außer aus 'ls'. In meinem Fall gibt Shell zuerst einige überschüssige Informationen zurück. – igor