1

各ホップへの平均時間を測定するために 3 つの ping を送信する必要がある (Python Scapy の traceroute から生成された) IP のリストがあります。私の最初の方法は、ソケットを使用して ICMP リクエストを作成し、応答時間を測定することでした。ただし、複数のホストに ping を実行する場合は不正確で遅くなります。通常の Linux ping を試してみfor iましたが、応答を待っている間にループがブロックされていました。明らかに、すべての ping 要求を同時に送信したいのです。

そこで、Linux で使用する方法を探していfpingます。これは、IP のリストを提供し、それを使用してパケットを構築する作業を行います。しかし、引数のリストをシェルコマンドに渡す方法や、データを配列に戻して処理が完了した後にさらに処理する方法がわかりません。

任意のポインタをいただければ幸いです!

4

2 に答える 2

3

についてはよくわかりませんがfping、このようなもの...

import subprocess

CMD = ['fping', 'param1', 'param2']

result = subprocess.check_output(CMD)

...プロセスが終了すると、実行され、出力が文字列として変数にfping param1 param2入れられます。resultfping

で出力を行に分割できますresult.splitlines()

pingこれは、localhost への 3 回の ping を取得するために使用する簡単なワンライナーの例です...

>>> [line.rpartition('=')[-1] for line in subprocess.check_output(['ping', '-c', '3', 'localhost']).splitlines()[1:-4]]
['0.028 ms', '0.023 ms', '0.025 ms']
于 2013-04-22T20:24:19.540 に答える