curl+tcpdump抓包脚本一例

简介: 使用脚本访问网站获取http状态码,抓包排查问题

背景信息:

    某网站访问偶发性连接失败,时间点不一样,且不易复现,遂弄个脚本测试,如下
1. #!/bin/bash
2. tcpdump -i any host www.aliyun.com  and port 80 -s0 -G 60 -Z root -w %Y%m%d-%H%M%S.pcap &
3. while true;
4.     do
5.     code=$(curl --connect-timeout 5 -sL -w "%{http_code}" -X POST "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 -i any"|grep pcap|awk '{print $2}')
9.     if [[ $code -ne 200 ]];then
10.     sleep 5s;
11.     kill -9 $dumppid
12.     break
13.     fi
14.     sleep 60s;
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的话sleep 5s,
11,kill掉tcpdump进程,
12,结束这个循环

在server端抓包

tcpdump -i any host clientip  and port 80 -s0 -G 60 -Z root -w %Y%m%d-%H%M%S.pcap &

server端抓client ip的请求80的包,每60秒转储一个文件

备注:

    磁盘要备有充分的空间,以免空间满导致异常

扩展:

    判断code不等200的时候,可以去curl一个短信接口,触发短信通知就更美妙了
目录
相关文章
|
5月前
|
Linux
linux下用tcpdump抓包
linux下用tcpdump抓包
|
3月前
|
机器学习/深度学习 Linux
tcpdump的抓包
tcpdump的抓包
23 0
|
3月前
|
Ubuntu 网络协议 安全
Tcpdump 抓包分析指令使用方法
tcpdump是一个强大的网络数据包抓包分析工具,用于抓取数据包和分析网络流量。并以可阅读的格式展示,包括源和目标地址、端口、协议类型等信息。
76 0
|
编解码 网络协议 网络架构
计算机网络基础 和 tcp 三次握手四次挥手,tcpdump抓包分析 协议过滤 分析,连接状态,标志位详解
wireshark 软件过滤及转码使用 ,TCP tcpdump 连接状态,标志位详解
239 1
|
网络协议 Linux 容器
Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!
Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!这篇文章我总结得比较详尽,可以当字典查,建议收藏,不过别光顾着收藏,点赞什么的鼓励我一下,这能让我更有动力给大家输出更好的内容。
3326 0
|
网络协议 Linux Windows
使用tcpdump+wireshark抓包分析网络数据包
最近和学弟在调试一个GPRS通信模块,需求是通过GPRS模块通过http协议发送数据到服务器,但是http协议一直失败,服务器返回400,通过查询http状态码得知,http400错误是请求无效,因为GPRS模块没有实现http协议的封装,需要在TCP协议的基础上,手动拼装http格式的报文.
3815 0
|
Shell Android开发 Linux
Android通过tcpdump抓包
1 手机要有root权限 2 下载tcpdump android模拟器上linux里面有的会自带。 3 adb push c:\wherever_you_put\tcpdump /data/local/tcpdump 4 adb shell chmod...
958 0