查看当前nat连接数的脚本

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

查看当前nat连接数的脚本

原文地址:http://coolerfeng.blog.51cto.com/133059/72563 感谢作者

今天在CU搜索帖子的时候,看到一个统计nat连接数的脚本

原脚本每次运行的时候只是把当前的所有连接显示出来

自己对脚本进行了改进

 

#!/bin/bash 
case "$1" in

 

#case语句表示设置程序运行的参数,$1表示第一个参数
-t) 
#while : 
echo "Input ctrl+c to Quit" 
#while : 
#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 
echo 
echo 
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 
echo 
sun= cat /proc/net/ip_conntrack|grep -c src 
echo 
echo 
echo 
;; 

-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 
cat -n /proc/net/ip_conntrack |grep udp |awk '{print $2"\t"$5"\t"$6"\t"$7"\t"$8"\t"$10}'|more 
echo 
sun= cat /proc/net/ip_conntrack|grep -c src 
echo 
echo 
echo 
;; 

*) 
echo "Usage {-t Tcp | -u Udp }" 
echo 
echo "Write By LouLancn@163.com"

echo "Changed By coolerfeng at 2008.4.20"
echo 
exit 1 
esac 
exit 0 
#最后的这个*)表示当直接运行这个shell的时候显示一个提示。告诉使用者的用法,很多程序都是这样做的。

 

把红色行的注释符号去掉则可以10s刷新一次,按Ctrl+c可以退出。

只把大于100k的包显示出来,呵呵,现在可以知道谁在下载东西了。小样的。kill you。哈哈

 

只修改了关于tcp的部分,其他部分未修改

试图实现按Q退出程序。暂时还不知道如何弄。另有一个想法就是对大于多少K的数据彩色显示。或者高亮。这样更容易看。

回家吃饭了。剩余功能来日再完成之。

本文出自 “风吹云动” 博客,请务必保留此出处http://coolerfeng.blog.51cto.com/133059/72563

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
基于阿里云,构建一个企业web应用上云经典架构,让IT从业者体验企业级架构的实战训练。
相关文章
|
12月前
|
网络协议 Unix Linux
服务器实现端口转发的N种方式
服务器实现端口转发的N种方式
784 0
|
2月前
|
网络协议 网络架构
通过使用动态ip解决网络连接问题
通过使用动态ip解决网络连接问题
|
2月前
|
网络架构
如何解决 SNAT 端口耗尽问题
如何解决 SNAT 端口耗尽问题
批量获取所有主机上的iptables已经设置的端口
根据主机列表和端口定义列表批量查询服务器上开启的端口并保存到日志里,命名规则为IP_port.log。
134 0
|
网络协议 Shell
tcpdump 方式检测ip 网段 扫段 tcp并发数攻击防御shell 脚本
tcpdump 自定义抓包时间将信息存入文件, 以systemd 系统服务方式进行启动
565 0
|
网络协议 Shell Perl
利用shell脚本拒绝TCP连接数大于20的IP
  最近服务器频繁遭到CC攻击,抓包、分析连接数后,发现单台服务器的并发连接数达到5万多,本想利用iptables的connlimit模块对连接数据进行限制的,无奈我接手的这几台服务器都没打此...
874 0
|
网络协议 Shell PHP
DHCP 给每台主机都设置固定IP脚本
#让每台计算机都有固定的IP 脚本 ####vim setup_dhcpd.sh #!/bin/bash read -p "Do you finished the IP's settings in every client (y/n)? "yn rea...
935 0
|
网络协议 负载均衡
单机单网卡最大tcp长连接数真的是65535吗?
很早微博上一直讨论比较多的问题,这里转载个知乎的答案:单机单网卡最大tcp长连接数真的是65535吗? 作者:许怀远 链接:https://www.zhihu.com/question/66553828/answer/244313925 来源:知乎 著作权归作者所有。
1497 0