私はbashスクリプトと同様に、Pythonを使って同様の結果を得ようとしています。 bashスクリプトのためのPythonの高速pingスイープ
コード:
#!/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スクリプトのすべてのバージョンで持っていた問題は、バッチスクリプトが実行する数秒に比べて、完了に非常に時間がかかることです。
バッチファイルは/ 24ネットワークをスイープするのに約2秒かかりますが、私がpythonスクリプトを入手するのに最適なのは約5-8分です。 Pythonスクリプトの
最新版:私はPythonでいくつかの異なる方法を試してみたが、bashスクリプトの速度近くでどこに行くことができない
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()
。
提案がありますか?
あなたはより具体的なことができます - 「数秒」に比べて「非常に長い時間」でどのくらい? –
bashスクリプトの末尾にあるアンパサンドは、プロセスをバックグラウンドで実行させます。あなたのPythonスクリプトはそれらをすべて1つずつ実行します。 – Blender
バッチファイルは/ 24ネットワークをスイープするのに約2秒かかりますが、私がpythonスクリプトを入手するのに最適なのは約5-8分です。 –