cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10
uniq使用
uniq [-cdu][-f<欄位>][-s<字符位置>][-w<字符位置>][--help][--version][輸入文件][輸出文件]
參數(shù):
-c或--count 在每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù)辛馆。
-d或--repeated 僅顯示重復(fù)出現(xiàn)的行列橱健。
-f<欄位>或--skip-fields=<欄位> 忽略比較指定的欄位片酝。
-s<字符位置>或--skip-chars=<字符位置> 忽略比較指定的字符臭觉。
-u或--unique 僅顯示出一次的行列颜及。
-w<字符位置>或--check-chars=<字符位置> 指定要比較的字符祸憋。
--help 顯示幫助。
--version 顯示版本信息逻悠。
[輸入文件] 指定已排序好的文本文件藐守。如果不指定此項(xiàng),則從標(biāo)準(zhǔn)讀取數(shù)據(jù)蹂风;
[輸出文件] 指定輸出的文件。如果不指定此選項(xiàng)乾蓬,則將內(nèi)容顯示到標(biāo)準(zhǔn)輸出設(shè)備(顯示終端)
sort使用
功能說明:將文本文件內(nèi)容加以排序,sort可針對文本文件的內(nèi)容惠啄,以行為單位來排序。
參 數(shù):
-b 忽略每行前面開始出的空格字符任内。
-c 檢查文件是否已經(jīng)按照順序排序撵渡。
-d 排序時,處理英文字母死嗦、數(shù)字及空格字符外趋距,忽略其他的字符。
-f 排序時越除,將小寫字母視為大寫字母节腐。
-i 排序時,除了040至176之間的ASCII字符外摘盆,忽略其他的字符翼雀。
-m 將幾個排序好的文件進(jìn)行合并。
-M 將前面3個字母依照月份的縮寫進(jìn)行排序孩擂。
-n 依照數(shù)值的大小排序狼渊。
-o<輸出文件> 將排序后的結(jié)果存入指定的文件。
-r 以相反的順序來排序类垦。
-t<分隔字符> 指定排序時所用的欄位分隔字符狈邑。
+<起始欄位>-<結(jié)束欄位> 以指定的欄位來排序,范圍由起始欄位到結(jié)束欄位的前一欄位蚤认。
--help 顯示幫助米苹。
--version 顯示版本信息
sort -n -k 2 -t- date // -t<分隔字符> 指定排序時所用的欄位分隔字符。 -k 選擇以哪個區(qū)間進(jìn)行排序 其中-t-表示以-分割
2017-01-09
2017-04-24
2017-10-23
2017-12-02
===================
使用tcpdump(該指令需要使用sudo執(zhí)行)監(jiān)聽主機(jī)為192.168.1.1烙懦,tcp端口為80的數(shù)據(jù)驱入,同時將輸出結(jié)果保存輸出到tcpdump.log
tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log
將本地80 端口的請求轉(zhuǎn)發(fā)到8080 端口赤炒,當(dāng)前主機(jī)IP 為192.168.2.1
iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080
查看http的并發(fā)請求數(shù)與其TCP連接狀態(tài)
netstat -n |awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
用tcpdump嗅探80端口的訪問看看誰最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print 2"."
4}'| sort | uniq -c | sort -nr |head -20
參數(shù)
完整的英文文檔:https://www.tcpdump.org/tcpdump_man.html
-A 以ASCII格式打印出所有分組,并將鏈路層的頭最小化亏较。
-c 在收到指定的數(shù)量的分組后莺褒,tcpdump就會停止。
-C 在將一個原始分組寫入文件之前雪情,檢查文件當(dāng)前的大小是否超過了參數(shù)file_size 中指定的大小遵岩。如果超過了指定大小,則關(guān)閉當(dāng)前文件巡通,然后在打開一個新的文件尘执。參數(shù) file_size 的單位是兆字節(jié)(是1,000,000字節(jié),而不是1,048,576字節(jié))宴凉。
-d 將匹配信息包的代碼以人們能夠理解的匯編格式給出誊锭。
-dd 將匹配信息包的代碼以C語言程序段的格式給出。
-ddd 將匹配信息包的代碼以十進(jìn)制的形式給出弥锄。
-D 打印出系統(tǒng)中所有可以用tcpdump截包的網(wǎng)絡(luò)接口丧靡。
-e 在輸出行打印出數(shù)據(jù)鏈路層的頭部信息。
-E 用spi@ipaddr algo:secret解密那些以addr作為地址籽暇,并且包含了安全參數(shù)索引值spi的IPsec ESP分組温治。
-f 將外部的Internet地址以數(shù)字的形式打印出來。
-F 從指定的文件中讀取表達(dá)式戒悠,忽略命令行中給出的表達(dá)式熬荆。
-i 指定監(jiān)聽的網(wǎng)絡(luò)接口。
-l 使標(biāo)準(zhǔn)輸出變?yōu)榫彌_行形式绸狐,可以把數(shù)據(jù)導(dǎo)出到文件卤恳。
-L 列出網(wǎng)絡(luò)接口的已知數(shù)據(jù)鏈路。
-m 從文件module中導(dǎo)入SMI MIB模塊定義六孵。該參數(shù)可以被使用多次纬黎,以導(dǎo)入多個MIB模塊。
-M 如果tcp報文中存在TCP-MD5選項(xiàng)劫窒,則需要用secret作為共享的驗(yàn)證碼用于驗(yàn)證TCP-MD5選選項(xiàng)摘要(詳情可參考RFC 2385)本今。
-b 在數(shù)據(jù)-鏈路層上選擇協(xié)議,包括ip主巍、arp冠息、rarp、ipx都是這一層的孕索。
-n 不把網(wǎng)絡(luò)地址轉(zhuǎn)換成名字逛艰。
-nn 不進(jìn)行端口名稱的轉(zhuǎn)換。
-N 不輸出主機(jī)名中的域名部分搞旭。例如散怖,‘nic.ddn.mil‘只輸出’nic‘菇绵。
-t 在輸出的每一行不打印時間戳。
-O 不運(yùn)行分組分組匹配(packet-matching)代碼優(yōu)化程序镇眷。
-P 不將網(wǎng)絡(luò)接口設(shè)置成混雜模式咬最。
-q 快速輸出。只輸出較少的協(xié)議信息欠动。
-r 從指定的文件中讀取包(這些包一般通過-w選項(xiàng)產(chǎn)生)永乌。
-S 將tcp的序列號以絕對值形式輸出,而不是相對值具伍。
-s 從每個分組中讀取最開始的snaplen個字節(jié)翅雏,而不是默認(rèn)的68個字節(jié)。
-T 將監(jiān)聽到的包直接解釋為指定的類型的報文人芽,常見的類型有rpc遠(yuǎn)程過程調(diào)用)和snmp(簡單網(wǎng)絡(luò)管理協(xié)議望几;)。
-t 不在每一行中輸出時間戳萤厅。
-tt 在每一行中輸出非格式化的時間戳橄妆。
-ttt 輸出本行和前面一行之間的時間差。
-tttt 在每一行中輸出由date處理的默認(rèn)格式的時間戳祈坠。
-u 輸出未解碼的NFS句柄。
-v 輸出一個稍微詳細(xì)的信息矢劲,例如在ip包中可以包括ttl和服務(wù)類型的信息赦拘。
-vv 輸出詳細(xì)的報文信息。
-w 直接將分組寫入文件中芬沉,而不是不分析并打印出來
=========================================例子==============
zgrep "請升級版本" * | awk -F"[: ]" '{print 9}' > /tmp/lh.log
zgrep "simple_detail.do" * | awk -F"[, ]" '{print (NF)}' > /tmp/lh_simple_detail.log
join -1 2 -2 1 /tmp/lh.log /tmp/lh_simple_detail.log > /tmp/lh_jieguo.log
less /tmp/lh_jieguo.log | awk '{print $(NF)}' | uniq -c""
zgrep "send success" * | awk -F "[ :]" '{print 4,
1>1900 &&
3
9}' | awk '
1<2200' > /tmp/lh_int190810.log
cat lh190810.log |awk '{print 2}' |sort > lh_int_tmp.log
join -1 1 -2 1 /tmp/lh_tmp.log /tmp/lh_int_tmp.log | wc -l
cat s.log | grep "time consuming" | awk -F"[=]" '{print 1>6000'|wc -l
zgrep "send success" user.2.log.gz | awk -F "[ :]" '{printf 3" ";for(i=9;i<=NF;i=i+1){printf
1>2030 && $1<2130' > /tmp/20191102.log