tcpdump統計http請求

下面介紹其統計方法。
1、捕捉10秒的數據包。

    tcpdump -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x504f -w /tmp/tcp.cap -s 512 2>&1 &
    sleep 10
    kill `ps aux | grep tcpdump | grep -v grep | awk '{print $2}'`

此命令表示監控網卡eth0,捕捉tcp,且21-22字節字符爲GE或者PO,表示匹配GET或者POST請求的數據包,並寫到/tmp/tcp.cap文件。
2、這時候我們得到最新10秒的二進制數據包文件,我們下一步就是通過strings命令來找出GET/POST的url以及Host。

    strings /tmp/tcp.cap | grep -E "GET /|POST /|Host:" | grep --no-group-separator -B 1 "Host:" | grep --no-group-separator -A 1 -E "GET /|POST /" | awk '{url=$2;getline;host=$2;printf ("%s\n",host""url)}' > url.txt

[strings /tmp/tcp.cap | grep 'Host: ' | cut -d' ' -f2 | sort | uniq -c | sort -n]
此命令是本文的關鍵,通過strings顯示二進制文件tcp.cap所有可打印字符,然後通過grep和awk過濾出http請求,並把拼接得到的url(包括域名+uri)寫進一個文件url.txt。

3、這時我們拿到了近10秒鐘所有的訪問url,接下來的統計就容易得出,比如:
統計QPS: Linux學習,http:// linux.it.net.cn

    (( qps=$(wc -l /tmp/url.txt | cut -d' ' -f 1) / 10 ))

排除靜態文件統計前10訪問url:

    grep -v -i -E "\.(gif|png|jpg|jpeg|ico|js|swf|css)" /tmp/url.txt | sort | uniq -c | sort -nr | head -n 10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章