北京SEO

linux下利用tcpdump实现24小时自动抓包

2019/10/10/17:45:33  阅读:2900  来源:谷歌SEO算法  标签: 挖矿

tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看,下面我们就来看一个tcpdump实现24小时自动抓包实现例子.

安装tcpdump,代码如下:

# yum install tcpdump

脚本里有注释#diy的,表示下一行需自定义修改,脚本都放在home目录下,crontab里写:

  1. **/6***/bin/bash/home/monitor_dump.sh
  2. **/6***/bin/bash/home/monitor_disk.sh

根据当磁盘空间的大小和流量的大小确定crontab里的时间间隔,因加了crontab要时间到才执行,为了现在执行,可执行:nohup sh /home/monitor_dump.sh &

vi常用命令:

# vi /etc/crontab

insert进入编辑状态,ESC进入命令状态:wq保存退出:q退出,修改后要执行 crontab /etc/crontab.

main_dump.sh (抓包的主程序),每隔1分钟通过死循环检测,让程序不断的去抓包,考虑到抓包的结果可能太大分析工具无法打开分析,所以每个数据包大小限制约为100M.并设定了前一个包抓完,间隔5秒,开始进行下一轮抓包.

每天的数据包放在/data下以日期命名的目录如:/data/2010-03-08,并进行压缩存储,包的命令格式为:yyyy-mm-dd@hhmmss-hhmmss.pcap.gz;其中yyyy-mm-dd表示日期,第一个hhmmss表示开始抓包的时分秒,第二个hhmmss表示抓包结束的时分秒,代码如下:

  1. #!/bin/bash
  2. #scriptname:/home/main_dump.sh
  3. while:
  4. do
  5. STIME=`date+%F"@"%H%M%S`
  6. DATE_DIR=`date+%F`
  7. if[!-d/data/$DATE_DIR];then
  8. mkdir-p/data/$DATE_DIR
  9. fi
  10. #diy#unit:byte;100MB
  11. MAXSIZE=100000000
  12. #diy
  13. DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap|awk'{print$2}'`
  14. if[!"$DUMPPID"];then
  15. #diy
  16. /usr/sbin/tcpdump-ieth0host113.105.152.180-w/data/$DATE_DIR/$STIME.pcap-s0&
  17. fi
  18. sleep1
  19. #diy
  20. DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap|awk'{print$2}'`
  21. PACKSIZE=`ls-l/data/$DATE_DIR|grep"$STIME.pcap"|awk'{print$5}'`
  22. while["$PACKSIZE"-lt"$MAXSIZE"];do
  23. PACKSIZE=`ls-l/data/$DATE_DIR|grep"$STIME.pcap"|awk'{print$5}'`//phpfensi.com
  24. sleep1m
  25. done
  26. kill-9$DUMPPID
  27. ETIME=`date+%H%M%S`
  28. mv/data/$DATE_DIR/$STIME.pcap/data/$DATE_DIR/$STIME-$ETIME.pcap
  29. gzip/data/$DATE_DIR/*.pcap
  30. sleep5
  31. done

monitor_dump.sh(监控抓包脚本)

为了保证抓包主程序能健康运行,通过crontab程序来调度monitor_dump.sh,监控抓包主程序是事正常运行,如果没有运行,则启动它,代码如下:

  1. #!/bin/bash
  2. #scriptname:/home/monitor_dump.sh
  3. DATE_DIR=`date+%F`
  4. STIME=`date+%F"@"%H%M%S`
  5. MAINDUMP=`ps-elf|grepmaindump|grep-vgrep`
  6. #diy
  7. DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap`
  8. #checkmainprogrammestatus
  9. if[!"$MAINDUMP"];then
  10. /bin/bash/home/maindump.sh
  11. fi
  12. if[!"$DUMPPID"];then
  13. #diy
  14. /usr/sbin/tcpdump-ieth0host113.105.152.180-w/data/$DATE_DIR/$STIME.pcap-s0&
  15. fi

monitor_disk.sh(监控硬盘空间)

监控磁盘的空闲空间,当磁盘的使用率大于等于30%时(可设置),会自动删除最早一天抓到的所在数据包,以保证磁盘的空闲空间,代码如下:

  1. #!/bin/bash
  2. #scriptname:/home/monitor_disk.sh
  3. #diy
  4. FREEDISK=`df-h|grep"/dev/sda3"|awk'{print$5}'|awk-F%'{print$1}'`
  5. HEADMOST=`ls-l/data|grep^d|awk'{print$NF}'|sort|head-n1`
  6. #checkfreediskstatus
  7. #diy
  8. if["$FREEDISK"-ge"30"];then
  9. rm-rf/data/"$HEADMOST"
  10. fi

广告内容

linux下利用tcpdump实现24小时自动抓包 linux下利用tcpdump实现24小时自动抓包 linux下利用tcpdump实现24小时自动抓包

相关阅读

热门评论

互联网十八般武艺 互联网十八般武艺

互联网十八般武艺

总篇数179

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法