そこで、Web サーバーに 86,400 回 ping を実行し、出力をテキスト ファイルに書き込むシェル スクリプトを作成しました。以下は 1 つの ping の例です。
64 bytes from a104-100-153-112.deploy.static.akamaitechnologies.com (104.100.153.112): icmp_seq=1 ttl=60 time=12.6 ms
64 bytes from a104-100-153-112.deploy.static.akamaitechnologies.com (104.100.153.112): icmp_seq=2 ttl=60 time=17.2 ms
64 bytes from a104-100-153-112.deploy.static.akamaitechnologies.com (104.100.153.112): icmp_seq=3 ttl=60 time=11.0 ms
最初の問題は、生の ping 出力から往復時間 (12.6) の値を 2 番目のテキスト ファイルに抽出する必要があることです。現在、12.6 の小数点は無視され、数値のみが取り込まれると思います。私のコードは次のとおりです。
sed 's/.* time= \ ([0-9]* \ ). * /\1/' pingoutput.txt | sort -n > sortedtime.txt
これらの時間値を に抽出した後、sortedtime.txt
テキスト ファイルを読み取り、各行 (つまり各ラウンドトリップ時間) を というリストの要素にしますtimelist[]
。次に、長さとリスト全体の両方を出力して、リストに 86400 ラウンドトリップ時間がすべて含まれ、正しくソートされていることを確認します。私のコードは次のとおりです。
with open("sortedtime.txt", 'r') as time:
timelist = []
for line in time:
timelist.append(line)
time.close()
print timelist[0:86399]
print len(timelist)
2 番目で最後の問題は、タイムリスト リスト内のすべての値の CDF をプロットして表示する必要があることです。私は Python 初心者で、パッケージにあまり詳しくないmatplotlib.pyplot
ので、リスト要素を x 軸と 0 から 1 の y 軸にプロットする方法がわかりません。
私は Linux で作業しています。どんな助けでも大歓迎です!