最近,须要将wireshark监听的数据进行提取,分两步:首先,应该得出wireshark的数据包吧,在图形化界面中能够很是直观的将监听数据进行存储,可是这样须要手动操做很是麻烦,并且容易出错(随着处理数据包的数量增长,图形化可能吃不消,之前就碰见过),在linux下,采用了tshark命令,tshark就是wireshark图形界面命令行化,命令以下:linux
sudo tshark -f "udp port 1243" -i eth0 (-w)> /tmp/capture.cap
对上面的命令进行解释:"udp port 1243",双引号内的东西就是对须要监听的内容进行一个筛选,也就是端口号为1243的udp数据包,-i后面就是须要监听的接口,接口后面的(-w)和(>)两个选项,表示须要存储文件的格式,-w存储的多是二进制文件,例如,使用-w的话,那么这行命令执行之后capture.cap就是二进制的文件,那么使用>之后,则保存的文本文件,固然,如今须要的是纯文本文件,最后则是文件须要保存的路径以及名称。工具
第一步完成之后,则须要从数据中提取出来须要的数据,好比时间,源、目的地址等有用信息,咱们采用以下命令:spa
sudo cat /tmp/capture.cap | awk'{print $1"\t" $2"\t" $3}' > /tmp/capture.txt
此时cat的任务就是将须要被提取的文件展示出来,经过管道,将输出内容做为awk命令的输入,awk是一个很是好的数据处理工具。具体见鸟哥的私房菜基础篇363页!,一样的输出为纯文本格式文件capture.txt,完成了上述的工做,我想放入同一个脚本就能很是轻松的调用并且不用出错,将上述两行命令输入一个脚本中,可是我发现没法出来capture.txt文件,后来发现本身SB了,脚本是一行一行执行,第一行是一直执行的,根本执行不到第二行来,后来在第一行后面加上&,让其进行后台运行,capture.txt,却是能够出来可是内容为空白,由于该文件仅仅在上面文件建立了就开始抓取本身的内容,固然什么也没有。命令行
后来我想,我要的只是最后通过调整的数据,不须要中间数据啊,为何不直接一条命令进行提取不就完了,因而将两个命令融合以下:code
sudo tshark -f "udp port 1243" -i eth0 |awk '{print $1 "\t" $2 "\t" $3}' > /tmp/capture.txt