自分のマシンとリモート マシンで "同時に" tcpdump を取得するスクリプトを作成する必要があります。つまり、キャプチャの開始 (0 秒目) は同時である必要があるため、分析で 2 つの tcpdump を比較できます。
これを達成する方法はありますか?
自分のマシンとリモート マシンで "同時に" tcpdump を取得するスクリプトを作成する必要があります。つまり、キャプチャの開始 (0 秒目) は同時である必要があるため、分析で 2 つの tcpdump を比較できます。
これを達成する方法はありますか?
おおよその時間が必要な場合 (たとえば、200 ミリ秒の範囲の誤差がある場合)、両方のマシンの時刻が同じであることを確認し (たとえばNTP経由)、たとえばcronを使用して両方のコマンドを同時に実行します。 .
これをもっと頻繁に行いたい場合は、の代わりにat コマンドcron
を使用することをお勧めします。簡単な日付計算を行うことができます。たとえば、次を参照してください。
または指定された時間までスリープします。
両方のスクリプト (つまり、ローカルとリモート) で、ローカル コマンドを実行し、ssh
.
Python などを使用しても問題ない場合は、datetime
モジュールを使用できます。たとえば、次を参照してください。
アイデアはほとんどこれです:
ssh
) 。ssh
またはローカルスクリプトの実行に10秒以上かかる場合はさらに深刻な問題があります:)tcpdump
します - それらはほぼ同期しているはずです (ある程度の許容範囲はありますが、最近のシステムでは 50 ミリ秒を超えることはないと思います)。お役に立てれば。
複数のテストクライアントを同期するために、私が今書いたものを次に示します。
#!/usr/bin/python
import time
import sys
now = time.time()
mod = float(sys.argv[1])
until = now - now % mod + mod
print "sleeping until", until
while True:
delta = until - time.time()
if delta <= 0:
print "done sleeping ", time.time()
break
time.sleep(delta / 2)
このスクリプトは、次の「丸め」または「シャープ」時間までスリープします。
簡単な使用例は./sleep.py 10; ./test_client1.py
、ある端末と./sleep.py 10; ./test_client2.py
別の端末で実行することです。
マシンのクロックが同期していることを確認したいと考えています。
または、tcpdump でこれらのオプションのいずれかを使用して、完全なタイムスタンプを取得できるものを使用します。
-t
Don't print a timestamp on each dump line.
-tt
Print an unformatted timestamp on each dump line.
-ttt
Print a delta (micro-second resolution) between current and previous line on each dump line.
-tttt
Print a timestamp in default format proceeded by date on each dump line.
-ttttt
Print a delta (micro-second resolution) between current and first line on each dump line.
最後に、execnetのようなものを実行して、(ほぼ) 同時に複数のマシンでコマンドを開始することができます。