所以,我試圖用python獲得類似的結果,就像我使用bash腳本一樣。Python中的快速ping掃描
代碼的bash腳本:
#!/bin/bash
for ip in $(seq 1 254); do
ping -c 1 10.10.10.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
done
,我想要做的事情是讓具有相似的速度相同的結果。每個版本的python腳本都存在的問題是,與批處理腳本所需的幾秒鐘相比,它需要很長時間才能完成。
該批處理文件大約需要2秒來掃描一個/ 24網絡,而使用python腳本獲得的最佳效果大約是5-8分鐘。
最新版本的python腳本的:
import subprocess
cmdping = "ping -c1 10.10.10."
for x in range (2,255):
p = subprocess.Popen(cmdping+str(x), shell=True, stderr=subprocess.PIPE)
while True:
out = p.stderr.read(1)
if out == '' and p.poll() != None:
break
if out != '':
sys.stdout.write(out)
sys.stdout.flush()
我試過在Python幾種不同的方式,但不能得到bash腳本的速度附近的任何地方。
有什麼建議嗎?
你能更具體 - 多久是「很長一段時間」相比,「幾秒鐘」? –
bash腳本末尾的&符號會導致進程在後臺運行。你的Python腳本一個接一個地運行它們。 – Blender
批處理文件需要大約2秒來掃描一個/ 24網絡,而我可以用python腳本獲得的最好時間大約是5-8分鐘。 –