适用于CentOS/REHL/Ubuntu/Debian等,抓出来的包可用Wireshark直接打开分析。
参考文章:
https://blog.csdn.net/wang7dao/article/details/18794865
原文的脚本相互调用时,名称有些问题,已修改
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的更多用法,可参考:
https://blog.csdn.net/nanyun2010/article/details/23445223
https://www.jianshu.com/p/8d9accf1d2f1
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *