新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > linux tcpdump腳本實現24小時自動抓包

        linux tcpdump腳本實現24小時自動抓包

        作者: 時間:2016-10-08 來源:網絡 收藏

        #說明---------------

        本文引用地址:http://www.104case.com/article/201610/305904.htm

        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



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 甘南县| 鄢陵县| 木里| 双牌县| 蒙城县| 静海县| 会宁县| 栾川县| 苍梧县| 嘉善县| 德昌县| 石泉县| 易门县| 兴义市| 汾西县| 阜阳市| 凉城县| 玉环县| 松滋市| 洪湖市| 彰武县| 视频| 松潘县| 临潭县| 洛川县| 宣恩县| 新绛县| 腾冲县| 依安县| 南涧| 绍兴市| 陆川县| 林口县| 岑溪市| 甘泉县| 积石山| 报价| 襄汾县| 东台市| 闽侯县| 诏安县|