2017-02-27 3 views
0

ich diesen Befehl auf Linux schreibenWie kombiniert nennen Linux-Befehle auf Python subprocess

netstat -ant | wc -l 

aber wenn ich versuche, aus Python zu nennen mit

subprocess.Popen(['netstat','-ant','|','wc','-l']) 

Ich kann nicht alle Ausgaben bekommen, sehe ich nur Ergebnis des ersten Befehls (netstat -ant). Wie kann ich diesen Befehl auf Python verarbeiten? (Anmerkung: Dieser Befehl gibt einen int als Ergebnis)

+1

* Code anzeigen * Lassen Sie uns nicht erraten was du geschrieben hast. –

+1

Warum brauchen Sie 'grep' und' wc' externe Programme? Es ist nicht so schwierig, diese Operationen in Python auszuführen. – cdarke

+0

Vielleicht kann diese vorherige [Frage] (http://stackoverflow.com/questions/295459/how-doi-i-use-subprocess-popen-to-connect-multiple-processes-by-pipes) Ihnen helfen. –

Antwort

0

Ich weiß nicht, ob es eine einfachere Methode ist, aber Sie können wie gehen.

from subprocess import run, Popen, PIPE 
sess1 = run(['netstat', 'ant'], stdout=PIPE) 
sess2 = Popen(['grep', '"SYN"'], stdin=PIPE) 
sess2.stdin.write(sess1.stdout) 
sess2.communicate() # required? 
+0

Danke, ich habe eine Lösung wie diese gefunden – pala9323