Linux系统抓包回放,Linux下24小时持续网络抓包(TCPDUMP)
適用于CentOS/REHL/Ubuntu/Debian等,抓出來的包可用Wireshark直接打開分析。
參考文章:
原文的腳本相互調用時,名稱有些問題,已修改
1、安裝tcpdump
執行(Ubuntu/Debian)
apt-get install tcpdump -y
或(CentOS/RHEL)
yum install tcpdump -y
2、編輯抓包主腳本main_dump.sh(假定腳本都放在/home目錄,下同。如不放此路徑則需更改相應腳本內容里的路徑)
vi /home/main_dump.sh
內容
---------------------------------------------------------------
#!/bin/bash
#script name:/home/main_dump.sh
while :
do
STIME=`date +%F"@"%H%M%S`
DATE_DIR=`date +%F`
if [ ! -d /data/$DATE_DIR ];then
mkdir -p /data/$DATE_DIR
fi
#diy #unit:byte;100MB
MAXSIZE=100000000
#diy 如果你的網卡不是eth0,請替換為實際網卡設備名
DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap|awk '{print $2}'`
if [ ! "$DUMPPID" ];then
#diy 請把host后的IP地址替換為需要抓取的源/目標地址;網卡替換為實際設備名;抓取的數據放在/data下,每天獨立子目錄
/usr/sbin/tcpdump -i eth0 host 10.13.6.15 -w /data/$DATE_DIR/$STIME.pcap -s 0 &
fi
sleep 1
#diy 如果你的網卡不是eth0,請替換為實際網卡設備名
DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap|awk '{print $2}'`
PACKSIZE=`ls -l /data/$DATE_DIR|grep "$STIME.pcap"|awk '{print $5}'`
while [ "$PACKSIZE" -lt "$MAXSIZE" ];do
PACKSIZE=`ls -l /data/$DATE_DIR|grep "$STIME.pcap"|awk '{print $5}'`
sleep 1m
done
kill -9 $DUMPPID
ETIME=`date +%H%M%S`
mv /data/$DATE_DIR/$STIME.pcap /data/$DATE_DIR/$STIME-$ETIME.pcap
gzip /data/$DATE_DIR/*.pcap
sleep 5
done
-----------------------------------------------------------------------------
3、編輯抓包監控腳本monitor_dump.sh
vi /home/monitor_dump.sh
內容
---------------------------------------------------------------------
#!/bin/bash
#script name:/home/monitor_dump.sh
DATE_DIR=`date +%F`
STIME=`date +%F"@"%H%M%S`
MAINDUMP=`ps -elf|grep main_dump|grep -v grep`
#diy 如果你的網卡不是eth0,請替換為實際網卡設備名
DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap`
#check main programme status
if [ ! "$MAINDUMP" ];then
/bin/bash /home/main_dump.sh
fi
if [ ! "$DUMPPID" ];then
#diy 請把host后的IP地址替換為需要抓取的源/目標地址;網卡替換為實際設備名
/usr/sbin/tcpdump -i eth0 host 10.13.6.15 -w /data/$DATE_DIR/$STIME.pcap -s 0 &
fi
-------------------------------------------------------------------------
4、編輯磁盤空間監控腳本monitor_disk.sh
vi /home/monitor_disk.sh
內容
---------------------------------------------------
#!/bin/bash
#script name:/home/monitor_disk.sh
#diy 設備/dev/xvf1是/data所在的磁盤,請替換為你實際的磁盤設備號
FREEDISK=`df -h|grep "/dev/xvdf1"|awk '{print $5}'|awk -F % '{print $1}'`
HEADMOST=`ls -l /data|grep ^d|awk '{print $NF}'|sort|head -n 1`
#check free disk status
#diy 磁盤大于等于占用75%時,刪除最早那天的抓包數據,以釋放空間
if [ "$FREEDISK" -ge "75" ];then
rm -rf /data/"$HEADMOST"
fi
------------------------------------------------------
5、賦予腳本執行權限
chmod +x /home/main_dump.sh
chmod +x /home/monitor_dump.sh
chmod +x /home/monitor_disk.sh
6、將定時抓包加到crontab服務的任務計劃里
vi /etc/crontab
增加(每天6點執行)
*? 6? ? * * *? ?root? ? /bin/bash /home/monitor_dump.sh
*? 6? ? * * *? ?root? ? /bin/bash /home/monitor_disk.sh
然后執行
crontab /etc/crontab
使計劃任務生效
7、如果想現在就開始執行(否則在6點才開始),或者在以后中途重啟了系統(抓包會停)想重新開始
可執行
nohup sh /home/monitor_dump.sh &
8、關于TCPDUMP及其配合Wireshark的更多用法,可參考:
總結
以上是生活随笔為你收集整理的Linux系统抓包回放,Linux下24小时持续网络抓包(TCPDUMP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 普通用户退出vim,Linu
- 下一篇: mageia linux 5.1 内核,