2016-07-14 46 views
1

我編程接口上丟棄數據包的IP表規則(丟棄進來以50%的概率包)。我希望能夠使用bash腳本在過去3秒內獲取丟棄的數據包數量。我已經看過了ifstat,但它似乎沒有認識到丟包正在發生(也許它只是在通過IPtables之後纔會看到數據包)。有沒有其他工具或工具可以用來獲取這樣的數字?如何獲取數據包的數量銳減了超過30秒

編輯:我應該指出,iptables的是一個工具,我使用的模擬高速網絡,可以使收件人開始包丟棄由於數量龐大。這種情況是我想看到並能夠識別的。

回答

3

這種用途dumpcap:

dumpcap -i your_interface_here -a duration:3 -w log.pcap | grep '^Packets received/dropped' 

dumpcap manpage says:

-a
指定一個標準用來指定Dumpcap什麼時候停止 捕捉文件。的標準是試驗形式的:值,其中測試 是以下之一:

 duration:value Stop writing to a capture file after value seconds 
     have elapsed. 

-i
捕獲接口
-w
收件原始分組數據到outfile。

+0

似乎並沒有回答OP的問題。他似乎在尋找丟棄數據包的統計數據,而不是試圖捕獲數據包。 – Shadowfen

+1

@Shadowfen:你確定?恕我直言,運正在尋找'我希望能夠得到丟棄的數據包的數量超過使用bash的script.' – sjsam

+0

的「丟棄的數據包數」過去3秒 - 不捕獲數據包。 – Shadowfen

0

你可以試試iptables -vL,它顯示iptable規則丟包數。

s1=$(iptables -vL | grep rule | awk '{ print $1}') 
sleep 3 
s2=$(iptables -vL | grep rule | awk '{ print $1}') 
echo "$(($s2-$s1))" 

規則代表iptables中定義的規則。

+0

雖然這可能適用於我使用IPtables丟包的特定場景,但從長遠來看,iptables應該模擬一種情況,即我的網絡以足夠高的速度運行,以致接口開始丟棄數據包。所以在這種情況下使用iptables方法將不起作用,因爲數據包不是按規則丟棄的,而是由於數量龐大導致的。 –