最近学了学Linux的awk工具,awk是一个优良的文本处理工具,是Linux及Unix环境中现有的功能最强大的数据处理引擎之一。并用一个实例——绘制TCP发送窗口流量变化曲线来熟悉awk及其相关综合操作;
首先使用Wireshark抓包TCP连接,生成一个your.cap文件;
下图为该文件内容:
然后用vim编辑器创建一个your.awk文件;
vim your.awk
.awk文件编辑内容如下:
NR==1 {t0=$1;}
/20 > 192/ {ack=$9;}
/2301 > 123/ && !/length 0$/ {printf("%.6f.%d\n",$1-t0,$10-ack);}
接着使用Linux下自带的字符界面抓包工具tcptump对你的.cap文件内容进行简化;
tcpdump -ttnr yourcap | tr ',:' ' '
优化后的内容(去掉了 ,:)如下图:
再使用管道将几个命令相连接:
tcpdump -ttnr yourcap | tr ',:' ' ' | awk -f your.awk
重定向到一个.csv文件(即Windows下著名办公三件套Excel的可处理格式处理文件)里面:
tcpdump -ttnr yourcap | tr ',:' ' ' | awk -f your.awk > your.awk
最后利用Excel一键生成TCP发送窗口流量变化曲线图如下:
怎么样?看到这个图是不是觉得特别的亲切!