一个简单的nagos插件脚本 , 监控 TCP 各状态的数量
2011-11-04 13:56
429 查看
#!/bin/bash
#===============================================#
# Description : Check the TCP-connection #
#===============================================#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKOWN=3
CONN_TMP="/tmp/netstat.tmp"
CONN=`netstat -ant | awk '/^tcp/ && !/LISTEN/{a[$NF]++}END{for(i in a) print i,a[i]}'`
echo $CONN > $CONN_TMP
EST=`cat $CONN_TMP | awk '/ESTABLISHED/{ print $2 }'`
TIME_WAIT=`cat $CONN_TMP | awk '/TIME_WAIT/{ print $2 }'`
SYN_RECV=`cat $CONN_TMP | awk '/SYN_RECV/{ print $2 }'`
FIN_WAIT1=`cat $CONN_TMP | awk '/FIN_WAIT1/{ print $2 }'`
FIN_WAIT2=`cat $CONN_TMP | awk '/FIN_WAIT2/{ print $2 }'`
LAST_ACK=`cat $CONN_TMP | awk '/LAST_ACK/{ print $2 }'`
CLOSE_WAIT=`cat $CONN_TMP | awk '/CLOSE_WAIT/{ print $2 }'`
if ! [ `uname` = "Linux" ] ;then
echo "This plugin is support Linux system,not support another system now"
echo "This plugin will check TCP connections "
fi
if [ "$EST" -gt 5000 ];then
echo "ESTABLISHED is too many; ESTABLISHED: $EST ; TIME_WAIT: $TIME_WAIT ; SYN_RECV: $SYN_RECV ; FIN_WAIT1: $FIN_WAIT1 ; FIN_WAIT2: $FIN_WAIT2 ; LAST_ACK: $LAST_ACK ; CLOSE_WAIT: $CLOSE_WAIT"
exit $STATE_CRITICAL
else
echo "ESTABLISHED is normal; ESTABLISHED: $EST ; TIME_WAIT: $TIME_WAIT ; SYN_RECV: $SYN_RECV ; FIN_WAIT1: $FIN_WAIT1 ; FIN_WAIT2: $FIN_WAIT2 ; LAST_ACK: $LAST_ACK ; CLOSE_WAIT: $CLOSE_WAIT"
exit $STATE_OK
fi
for a in $EST $TIME_WAIT $SYN_RECV $FIN_WAIT1 $FIN_WAIT2 $LAST_ACK $CLOSE_WAIT
do
if [[ $a =~ "^[0-9]{1,}$" || $a = "" ]]
echo "UNKOWN `uname` no yet support by this plugin"
exit $STATE_UNKOWN
fi
done
#===============================================#
# Description : Check the TCP-connection #
#===============================================#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKOWN=3
CONN_TMP="/tmp/netstat.tmp"
CONN=`netstat -ant | awk '/^tcp/ && !/LISTEN/{a[$NF]++}END{for(i in a) print i,a[i]}'`
echo $CONN > $CONN_TMP
EST=`cat $CONN_TMP | awk '/ESTABLISHED/{ print $2 }'`
TIME_WAIT=`cat $CONN_TMP | awk '/TIME_WAIT/{ print $2 }'`
SYN_RECV=`cat $CONN_TMP | awk '/SYN_RECV/{ print $2 }'`
FIN_WAIT1=`cat $CONN_TMP | awk '/FIN_WAIT1/{ print $2 }'`
FIN_WAIT2=`cat $CONN_TMP | awk '/FIN_WAIT2/{ print $2 }'`
LAST_ACK=`cat $CONN_TMP | awk '/LAST_ACK/{ print $2 }'`
CLOSE_WAIT=`cat $CONN_TMP | awk '/CLOSE_WAIT/{ print $2 }'`
if ! [ `uname` = "Linux" ] ;then
echo "This plugin is support Linux system,not support another system now"
echo "This plugin will check TCP connections "
fi
if [ "$EST" -gt 5000 ];then
echo "ESTABLISHED is too many; ESTABLISHED: $EST ; TIME_WAIT: $TIME_WAIT ; SYN_RECV: $SYN_RECV ; FIN_WAIT1: $FIN_WAIT1 ; FIN_WAIT2: $FIN_WAIT2 ; LAST_ACK: $LAST_ACK ; CLOSE_WAIT: $CLOSE_WAIT"
exit $STATE_CRITICAL
else
echo "ESTABLISHED is normal; ESTABLISHED: $EST ; TIME_WAIT: $TIME_WAIT ; SYN_RECV: $SYN_RECV ; FIN_WAIT1: $FIN_WAIT1 ; FIN_WAIT2: $FIN_WAIT2 ; LAST_ACK: $LAST_ACK ; CLOSE_WAIT: $CLOSE_WAIT"
exit $STATE_OK
fi
for a in $EST $TIME_WAIT $SYN_RECV $FIN_WAIT1 $FIN_WAIT2 $LAST_ACK $CLOSE_WAIT
do
if [[ $a =~ "^[0-9]{1,}$" || $a = "" ]]
echo "UNKOWN `uname` no yet support by this plugin"
exit $STATE_UNKOWN
fi
done
相关文章推荐
- nagios插件-监控tcp状态连接数shell脚本
- 写了一个简单的shell脚本监控mysql服务器运行状态
- 基于jquery的一个简单的脚本验证插件
- 一个简单自动监控nginx 504错误的php脚本
- 一个简单自动监控nginx 504错误的php脚本
- zabbix自定义监控脚本——获取tcp状态之不同命令的响应时间
- 一个用于监控Dell PowerEdge服务器硬件状态的nagios/icinga插件
- 4000 一个简单的监控mysql服务的shell脚本
- 设计一个脚本,监控远程的一台机器(假设ip为123.23.11.21)的存活状态,当发现宕机时发一封
- 【sehll学习】linux运维一个简单shell脚本监控系统内存
- nagios插件之监控tcp的established数量
- zabbix监控tcp状态脚本
- Linux服务器监控网站状态简单SHELL脚本
- 一个shell for循环与case结合的脚本(监控程序状态)
- nagios监控mysql主从状态的简单脚本
- 基于dstat监控网卡流量,服务器状态简单脚本
- 一个shell for循环与case结合的脚本(监控程序状态)
- 新写了一个简单的日志监控shell脚本(之前的问题已经修复)
- zabbix自定义监控脚本——获取tcp状态之不同命令的响应时间
- Nagios监控mfs运行状态插件脚本