linux tcpdump脚本实现24小时自动抓包

标签: linux tcpdump 脚本 | 发表时间:2014-01-26 21:52 | 作者:wang7dao
出处:http://blog.csdn.net
#说明---------------
maindump.sh (抓包的主程序)
每隔1分钟通过死循环检测,让程序不断的去抓包;考虑到抓包的结果可能太大分析工具无法打开分析,所以每个数据包大小限制约为100M;
并设定了前一个包抓完,间隔5秒,开始进行下一轮抓包;
每天的数据包放在/data下以日期命名的目录如:/data/2010-03-08,并进行压缩存储,包的命令格式为:yyyy-mm-dd@hhmmss-hhmmss.pcap.gz;其中yyyy-mm-dd表示日期,第一个hhmmss表示开始抓包的时分秒,第二个hhmmss表示抓包结束的时分秒。


monitor_dump.sh (监控抓包脚本),monitor_disk.sh(监控硬盘空间)
为了保证抓包主程序能健康运行,通过crond程序来调度monitor.sh;
监控抓包主程序是事正常运行,如果没有运行,则启动它;
监控磁盘的空闲空间,当磁盘的使用率大于等于30%时(可设置),会自动删除最早一天抓到的所在数据包,以保证磁盘的空闲空间;
脚本里有注释#diy的,表示下一行需自定义修改。


脚本都放在home目录下;crontab里写:
* */6 * * * /bin/bash /home/monitor.sh
* */6 * * * /bin/bash /home/monitor_disk.sh
根据当磁盘空间的大小和流量的大小确定crontab里的时间间隔
因加了crontab要时间到才执行,为了现在执行,可执行:nohup sh /home/monitor.sh &


#说明结束--------------


------------------------------------------------------------




#!/bin/bash
#script name:/home/monitor_dump.sh


DATE_DIR=`date +%F`
STIME=`date +%F"@"%H%M%S`


MAINDUMP=`ps -elf|grep maindump|grep -v grep`
#diy
DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap`


#check main programme status
if [ ! "$MAINDUMP" ];then


    /bin/bash /home/maindump.sh          


fi


if [ ! "$DUMPPID" ];then
#diy
    /usr/sbin/tcpdump -i eth0 host 113.105.152.180 -w /data/$DATE_DIR/$STIME.pcap -s 0 &
fi


-----------------------------------------------------------
#!/bin/bash
#script name:/home/monitor_disk.sh


#diy
FREEDISK=`df -h|grep "/dev/sda3"|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
if [ "$FREEDISK" -ge "30" ];then


          rm -rf /data/"$HEADMOST"
          
fi


------------------------------------------------------------


#!/bin/bash
#script name:/home/maindump.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


          #unit:byte;100MB
#diy
          MAXSIZE=100000000
#diy
          DUMPPID=`ps -ef|grep "tcpdump -i eth0"|grep pcap|awk '{print $2}'`


          if [ ! "$DUMPPID" ];then
#diy
              /usr/sbin/tcpdump -i eth0 host 113.105.152.180 -w /data/$DATE_DIR/$STIME.pcap -s 0 &
          fi


          sleep 1
#diy
          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
作者:wang7dao 发表于2014-1-26 13:52:16 原文链接
阅读:106 评论:0 查看评论

相关 [linux tcpdump 脚本] 推荐:

linux tcpdump脚本实现24小时自动抓包

- - CSDN博客系统运维推荐文章
#说明---------------. maindump.sh (抓包的主程序). 每隔1分钟通过死循环检测,让程序不断的去抓包;考虑到抓包的结果可能太大分析工具无法打开分析,所以每个数据包大小限制约为100M;. 并设定了前一个包抓完,间隔5秒,开始进行下一轮抓包;. 每天的数据包放在/data下以日期命名的目录如:/data/2010-03-08,并进行压缩存储,包的命令格式为:yyyy-mm-dd@hhmmss-hhmmss.pcap.gz;其中yyyy-mm-dd表示日期,第一个hhmmss表示开始抓包的时分秒,第二个hhmmss表示抓包结束的时分秒.

Linux下使用tcpdump使用

- - ITeye博客
(监听22端口,只抓取20个数据包). src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针.

Linux抓包工具tcpdump详解

- - 服务器运维与网站架构|Linux运维|互联网研究
PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具. tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.

linux tcpdump命令以及结果分析

- - CSDN博客系统运维推荐文章
tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看. 1.针对特定网口抓包(-i选项). 当我们不加任何选项执行tcpdump时,tcpdump将抓取通过所有网口的包;使用-i选项,我们可以在某个指定的网口抓包:.

Linux下网络抓包命令tcpdump详解(在wireshark中看包)

- - 开心平淡对待每一天。热爱生活
tcpdump采用命令行方式,它的命令格式为:.       tcpdump[ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ].           [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ].           [ -T 类型 ] [ -w 文件名 ] [表达式 ]   .

Linux操作系统tcpdump抓包分析详解

- - CSDN博客互联网推荐文章
PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具. tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.

tcpdump命令

- - CSDN博客推荐文章
英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报. 它会输出在某个网络接口上符合匹配表达式的报内容的描述. 当tcpdump完成抓包后,会打印出类似下面的内容: . 当然,在读取网络上的数据包时,得需要特权,比如linux上的超级用户.

Linux下自动FTP脚本

- - ITeye博客
前面写了一个Windows下自动FTP的脚本:. 今天新增Linux下的简单脚本,还待优化. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Linux 定期自动备份脚本

- jinn - Wow! Ubuntu
我们在网维工作中,常常要备份一些资料,虽然事情不复杂,但是很费时间的,我在这里分享一个 Linux 备份脚本,轻松自如的实现自动备份,并且可以保留N天备份的档案. 这个脚本分为两个文件,一个是执行文件backup.sh,另一个是备份项目文件project.lst. -- 重要变量名 作用 LogFile.

编写 Linux 桌面脚本,第 2 部分: 编写 Nautilus 脚本

- ripwu - IBM developerWorks 中国 : Linux : Articles,Tutorials
本系列文章探讨了如何使用 Python 为 GNOME 桌面、screenlets 架构以及 Nautilus 创建脚本,来交付高生产能力的环境. 桌面脚本实现拖放功能,以及快速访问常用信息与服务的功能. 在这一部分中,将学习如何使用 Python 来增加功能,从而实现对桌面 Nautilus 的扩展.