curl+tcpdump抓包脚本一例

背景信息:
某网站访问偶发性连接失败,时间点不一样,且不易复现,遂弄个脚本测试,如下

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一个短信接口,触发短信通知就更美妙了

时间: 2024-05-16 18:09:49

curl+tcpdump抓包脚本一例的相关文章

tcpdump 抓包让wireshark来分析

在linux下面用tcpdump 抓包非常方便, 但是抓的包要提取出来进行分析, 还是得用wireshark来过滤分析比较方便.   下面先介绍一下 TCPDUMP 的使用   例:tcpdump host 172.16.29.40 and port 4600 -X -s 500 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]

TcpDump 抓包 传输数据包

TcpDump 抓包工具 (很容易的,别有压力,朋友) 1.首先看一下它的作用:TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,   并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 2.举个例子  jason@jason-Inspiron-3542:~$ sudo tcpdump -i wlan0   -A   host 192.168.0.140  and port 8080              

虚拟机-用tcpdump抓包发现的双网卡组播问题

问题描述 用tcpdump抓包发现的双网卡组播问题 A有两个网卡,同时装了一台虚拟机,所以虚拟机中也有两个网卡,IP网段分别为192.168.22.X和192.168.21.X,用他们分别ping A,B是通行的.但C(192.168.22.21).B(192.168.21.13)不通. 现在用组播工具,在B中发出组播信号,通过A中的虚拟机,C是可以知道的.但是反过来就不行.用Tcpdump抓包时,发现在C发出组播信号,虚拟机网卡0,IP为(192.168.22.X)可以抓取到包,但是虚拟网卡1

java-android Runtime.getRuntime.exec()方法调用tcpdump抓包但文件无法保存

问题描述 android Runtime.getRuntime.exec()方法调用tcpdump抓包但文件无法保存 android内置程序调用tcpdump: Runtime.getRuntime().exec("/data/local/tcpdump -XvvennSs 0 -w /mnt/sdcard/cap.pcap -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 or tcp[20:2]=0x504f"); 该命令在cmd上可行,但让

tcp链接的几种状态&tcpdump抓包

linux服务器上的11种tcp状态   说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手 里面的几个概念: SYN: (同步序列编号,Synchronize Sequence Numbers) ACK: (确认编号,Acknowledgement Number) FIN: (结束标志,FINish) TCP三次握手(创建 OPEN) 客户端发起一个和服务创建TCP链接的请求,这里是SYN(J) 服务端接受到客户端的创建请求后,返回两

android tcpdump抓包-Android平台下解析tcpdump数据包

问题描述 Android平台下解析tcpdump数据包 用tcpdump抓到的数据包需要借助第三方软件查看,想知道在Android平台下是否可以去直接解析tcpdump抓到的数据包, 实时显示抓到的网络数据.

linux中tcpdump抓包常用命令

抓取mysql执行的sql语句 tcpdump -i eth1 -s 0 -l -w - dst  port 3306 | strings 抓取mysql通讯的网络包(cap用wireshark打开) tcpdump -n -nn -tttt -i eth0 -s 65535 'port 3306' -w 20160505mysql.cap 各种远程抓包方法  -s 0 -w /tmp/sniff.pcap port  # On the remote side mkfifo /tmp/fifo;

Linux基础:用tcpdump抓包

简介 网络数据包截获分析工具.支持针对网络层.协议.主机.网络或端口的过滤.并提供and.or.not等逻辑语句帮助去除无用的信息. tcpdump - dump traffic on a network 例子 不指定任何参数 监听第一块网卡上经过的数据包.主机上可能有不止一块网卡,所以经常需要指定网卡. tcpdump 监听特定网卡 tcpdump -i en0 监听特定主机 例子:监听本机跟主机182.254.38.55之间往来的通信包. 备注:出.入的包都会被监听. tcpdump hos

linux下利用tcpdump实现24小时自动抓包

  安装tcpdump  代码如下   # yum install tcpdump 脚本里有注释#diy的,表示下一行需自定义修改. 脚本都放在home目录下;crontab里写: * */6 * * * /bin/bash /home/monitor_dump.sh * */6 * * * /bin/bash /home/monitor_disk.sh 根据当磁盘空间的大小和流量的大小确定crontab里的时间间隔 因加了crontab要时间到才执行,为了现在执行,可执行:nohup sh /