Tcp

“tcpdump”擷取最後的數據包

  • June 21, 2014

我正在監視某個埠,因為我的應用程序使用該埠,似乎連接隨機斷開,我想看看在連接斷開之前通過的最後一個數據包是什麼:我使用了這一行

sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

但要讓它工作,我必須啟動另一個終端並發出

sudo killall tcpdump

有更好的方法嗎?EDIT1:只擷取最後一個數據包很重要,因為我不希望文件膨脹,因為有足夠的流量來快速填滿磁碟空間。

好的,我想我找到了解決方案

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

這將每 10 秒將您的輸出文件旋轉到一個名為tcpamir-<unixtimestamp>.txt

如果您擔心掛起的文件大小,您還可以修改輸出文件,因此它每天都會自行覆蓋。欲了解更多資訊,請閱讀man 3 strftime

我想到了類似的東西

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

Where%R以 24 小時製表示時間(例如 12:40)。

讀取相關的輸出文件

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

第二種解決方案:

將其拆分為更多命令並將其保存為腳本/函式:

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

引用自:https://unix.stackexchange.com/questions/138334