背景信息:
某网站访问偶发性连接失败,时间点不一样,且不易复现,遂弄个脚本测试,如下
1.#!/bin/bash 2.tcpdump-ianyhostwww.aliyun.comandport80-s0-G60-Zroot-w%Y%m%d-%H%M%S.pcap& 3.whiletrue; 4.do 5.code=$(curl--connect-timeout5-sL-w"%{http_code}"-XPOST"www.aliyun.com"-o/dev/null) 6.now=$(date"+%Y-%m-%d%H:%M:%S") 7.echo$code$now>>./result.txt 8.dumppid=$(ps-ef|grep"tcpdump-iany"|greppcap|awk'{print$2}') 9.if[[$code-ne200]];then 10.sleep5s; 11.kill-9$dumppid 12.break 13.fi 14.sleep60s; 15.done |
注释:
1,#!/bin/bash是指此脚本使用/bin/bash来解释执行
2,tcpdump抓包,这里的host写的域名,大多数场景可以写ip+端口,且60秒转储一次抓包文件
5,设置code的变量,$()等同于``,优先执行的意思,里面的curl大概是设置5秒超时,只获取code,方法是使用POST,
6,获取当前时间,精确到秒
7,将http_code以及时间写入当前目录的result.txt
8,获取tcpdump的pid,以备后面抓到后kill掉
9,判断code是否不等于200,
10,不等于200的话sleep5s,
11,kill掉tcpdump进程,
12,结束这个循环
在server端抓包
tcpdump-ianyhostclientipandport80-s0-G60-Zroot-w%Y%m%d-%H%M%S.pcap& |
server端抓clientip的请求80的包,每60秒转储一个文件
备注:
磁盘要备有充分的空间,以免空间满导致异常
扩展:
判断code不等200的时候,可以去curl一个短信接口,触发短信通知就更美妙了
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。