次のコマンドを使用してvoipトラフィックをtcpdumpします。
tcpdump -nn port 5060 -i eth0 | grep 'xxx.xxx.xxx.xxx.5060: SIP: SIP/2.0 5'
そして次のようなものが得られます:
11:10:03.600493 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:03.610092 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:03.860551 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:04.190145 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 504 Server Time-out
11:10:04.510174 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:04.870164 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:06.010196 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:07.039787 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 503 Service Unavailable
11:10:07.330243 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:08.520721 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 500 Server Internal Error
11:10:08.720207 IP xxx.xxx.xxx.xxx.5060 > yyy.yyy.yyy.yyy.5060: SIP: SIP/2.0 503 Service Unavailable
現在の秒の対応する行数をリアルタイムでどのように取得できますか?つまり、11:10:08の場合は2を取得します。
ベストアンサー1
元の投稿で述べたライブソリューションです。
次のコードをスクリプトとして保存し、実行可能にします。
#!/bin/bash
current_sec=0
while read line
do
prev_sec=$current_sec
current_sec=${line:0:8}
if [ "$current_sec" == "$prev_sec" ]
then
line_count=$((line_count+1))
else
echo $prev_sec /// $line_count
line_count=1
fi
done
次に、次を実行します。
tcpdump -nn port 5060 -i eth0 | grep 'xxx.xxx.xxx.xxx.5060: SIP: SIP/2.0 5' | saved_script.sh
リアルタイムで印刷されます。
13:29:50 /// 0
13:29:51 /// 4
13:29:52 /// 9
13:29:54 /// 2
このコードは十分にテストされておらず、バグがあるかもしれませんが、直接テストできます。