檢視目前nat連接配接數的腳本
今天在CU搜尋文章的時候,看到一個統計nat連接配接數的腳本
原腳本每次運作的時候隻是把目前的所有連接配接顯示出來
自己對腳本進行了改進
#!/bin/bash
case "$1" in
#case語句表示設定程式運作的參數,$1表示第一個參數
-t)
#while :
echo "Input ctrl+c to Quit"
#do
#while : 這是一個永遠的循環,因為後面的條件省略了,看我同僚寫的
while [ "1" -eq "1" ] 也可以。(廢話,1當然永遠等于1了)
cat -n /proc/net/ip_conntrack |grep tcp |awk '{print $5"\t"$6"\t"$7"\t"$8"\t"$9"\t"$11}'> temp.log
#從/proc/net/ip_conntrack去拿我們想要的資料
m=1
for i in `cat temp.log|awk '{print $6}'| sed 's/bytes=//'`
do
if (( $i/1024 > 100 ))
then
size=`expr $i / 1024`
#sed -n "${m}p" temp.log | awk '{print $1,$2,$3,$4,$5}' | sed "a\kbytes=${size}k"
sed -n "${m}p" temp.log | sed "s/bytes.*/&\tkbytes=${size}k/"
fi
((m++))
done
#這個for循環上一篇文章介紹過了。這裡要處理的是bytes=XXXXX這一列的内容,取出來進行比較。m這個變量表示目前行,循環第一次就是第一行,依次類推,取出目前行的内容後再次進行處理,在bytes的結尾添加kbytes=xxxk,這樣直覺。(m++))表示變量自增,開始我用的是C的文法,m=m+1,結果不對。
echo
sun= cat /proc/net/ip_conntrack|grep -c src
#sleep 10
#done
;;
-u)
cat -n /proc/net/ip_conntrack |grep udp |awk '{print $2"\t"$5"\t"$6"\t"$7"\t"$8"\t"$10}'|more
-a)
cat -n /proc/net/ip_conntrack |grep tcp |awk '{print $2"\t"$5"\t"$6"\t"$7"\t"$8"\t"$9"\t"$11}'|more
*)
echo "Usage {-t Tcp | -u Udp }"
echo "Changed By coolerfeng at 2008.4.20"
exit 1
esac
exit 0
#最後的這個*)表示當直接運作這個shell的時候顯示一個提示。告訴使用者的用法,很多程式都是這樣做的。
把紅色行的注釋符号去掉則可以10s重新整理一次,按Ctrl+c可以退出。
隻把大于100k的包顯示出來,呵呵,現在可以知道誰在下載下傳東西了。小樣的。kill you。哈哈
隻修改了關于tcp的部分,其他部分未修改
試圖實作按Q退出程式。暫時還不知道如何弄。另有一個想法就是對大于多少K的資料彩色顯示。或者高亮。這樣更容易看。
回家吃飯了。剩餘功能來日再完成之。