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一個短信接口,觸發短信通知就更美妙了
最後更新:2017-09-18 19:33:09