linux教程之linux下使用tcpdump完成24小时主动抓包
对于开发环境的选择尽量要轻量级和高度可定制,航空母舰级别的工具往往会让你迷惑不解;安装tcpdump
代码以下#yuminstalltcpdump 剧本里有正文#diy的,暗示下一行需自界说修正。
剧本都放在home目次下;crontab里写:
**/6***/bin/bash/home/monitor_dump.sh
**/6***/bin/bash/home/monitor_disk.sh
依据当磁盘空间的巨细和流量的巨细断定crontab里的工夫距离
因加了crontab要工夫到才实行,为了如今实行,可实行:nohupsh/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暗示抓包停止的时分秒。
代码以下#!/bin/bash
#scriptname:/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
DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap|awk{print$2}`
if[!"$DUMPPID"];then
#diy
/usr/sbin/tcpdump-ieth0host113.105.152.180-w/data/$DATE_DIR/$STIME.pcap-s0&
fi
sleep1
#diy
DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap|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}`
sleep1m
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
sleep5
done monitor_dump.sh(监控抓包剧本)
为了包管抓包主程序能安康运转,经由过程crontab程序来调剂monitor_dump.sh;
监控抓包主程序是事一般运转,假如没有运转,则启动它;
代码以下#!/bin/bash
#scriptname:/home/monitor_dump.sh
DATE_DIR=`date+%F`
STIME=`date+%F"@"%H%M%S`
MAINDUMP=`ps-elf|grepmaindump|grep-vgrep`
#diy
DUMPPID=`ps-ef|grep"tcpdump-ieth0"|greppcap`
#checkmainprogrammestatus
if[!"$MAINDUMP"];then
/bin/bash/home/maindump.sh
fi
if[!"$DUMPPID"];then
#diy
/usr/sbin/tcpdump-ieth0host113.105.152.180-w/data/$DATE_DIR/$STIME.pcap-s0&
fi monitor_disk.sh(监控硬盘空间)
监控磁盘的余暇空间,当磁盘的利用率年夜于即是30%时(可设置),会主动删除最早一天抓到的地点数据包,以包管磁盘的余暇空间;
代码以下#!/bin/bash
#scriptname:/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-n1`
#checkfreediskstatus
#diy
if["$FREEDISK"-ge"30"];then
rm-rf/data/"$HEADMOST"
fi</p>
给你装的系统里为ubuntu12.04,它已经封装的很臃肿了,但是考虑到你没有很多时间投入其中,所以给你装了它,但是怎么用它提高开发效率,需要你在学习的过程中不断总结; 上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题. 当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。 以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。 工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。 Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。 其次,Linux简单易学,因为我们初学者只是学的基础部分,Linux的结构体系非常清晰,再加上老师循序渐进的教学以及耐心的讲解,使我们理解起来很快,短期内就基本掌握了操作和运行模式。 如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。 熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
页:
[1]