0
我嘗試了很多描述的方法,但沒有和我一起工作。任何人都可以請解釋我怎樣才能使用這個在一個單一的Python腳本使用子進程?如何在Python腳本中使用iperf和grep?
iperf -c 10.0.0.1 -i 1 -t 100 | grep -Po'[0-9。] *(?= Mbits/sec)'
我嘗試了很多描述的方法,但沒有和我一起工作。任何人都可以請解釋我怎樣才能使用這個在一個單一的Python腳本使用子進程?如何在Python腳本中使用iperf和grep?
iperf -c 10.0.0.1 -i 1 -t 100 | grep -Po'[0-9。] *(?= Mbits/sec)'
所以我解決了這個問題。這個想法是將這兩個命令與不同的子進程一起使用。首先爲iperf創建進程並將此進程輸入到grep命令的第二個進程的stdin,如下所示:
process1 = subprocess.Popen([「iperf」,「 - c」,10.10.0.1 ],標準輸出= subprocess.PIPE) prrocess2 = subprocess.Popen([ 「grep的」, 「-Po」,[0-9] *(?=比特/秒)],標準輸入= process1.stdout,標準輸出=子.PIPE).communicate()[0]
從一個命令管道到另一個是殼的功能,所以你*必須*指定您所使用的子過程的方法'殼= TRUE'。但爲什麼不只是迭代Python中的輸出並放棄不必要的'grep'? – kindall
什麼沒有用?它怎麼沒用? –
bes = subprocess.Popen([「iperf」,「-c」,10.0.1.1 |「grep」,「 - Po」,[0-9。] *(?= Mbits/sec)'],shell = True ,stdout = subprocess.PIPE).communicate()[0] – Amigo