shell迷你版监控脚本

写了一个shell版mini监控脚本,纯属跟大家分享学习下,有兴趣学习shell的可以看下。(*_*)

总共3个脚本文件service.sh, daemon.sh ,tcp.sh

实现了一些基本功能:端口监控,存活监控,掉线邮件报警,重新上线邮件通知

将3个文件放在同个目录下

设置:在tcp.sh中可以设置邮件通知地址,与邮件通频率次数

运行: ./service.sh start

主要文件代码如下:

tcp.sh文件

#!/bin/bash
LANG=C
#邮件地址设置
fromaddress="[email protected]"    #From地址
toaddress="[email protected]"    #发送地址
ccaddress="[email protected]" #抄送地址
#邮件报警从复次数
remun=2
#被监控服务器、端口列表
server_all_list=(192.168.70.25:2004 192.168.70.24:80 192.168.16.56:80 )
#################################################################
#采用mail决定发送报警消息。
send_msg()
{
/bin/grep "$server_ip" mun.tmp > /dev/null 2>&1
if [ $? -eq 0 ]
then
    mun=$(grep "$server_ip" mun.tmp | awk -F ‘:‘ ‘{print $2}‘)
    if [ $mun -lt $remun ];then
 echo "$messages" | mail -c $ccaddress -s "$server_ip is down" $toaddress -- -f $fromaddress
 newmun=$[$mun + 1]
 /bin/sed -i ‘s/‘$server_ip‘:‘$mun‘/‘$server_ip‘:‘$newmun‘/g‘ mun.tmp
    fi
else
    echo "$server_ip:1" >> mun.tmp
    echo "$messages" | mail -c $ccaddress -s "$server_ip is down" $toaddress -- -f $fromaddress
# echo "$messages"
# echo "$server_ip"
fi
}
#重置邮件已发送次数记录
reset_mun()
{
/bin/sed -i ‘/‘$server_ip‘/d‘ mun.tmp
echo "server $server_ip online" | mail -c $ccaddress -s "$server_ip server online" $toaddress -- -f $fromaddress
}
###########
server_all_len=${#server_all_list[*]}
i=0
while  [ $i -lt $server_all_len ]
do
   server_ip=$(echo ${server_all_list[$i]} | awk -F ‘:‘ ‘{print $1}‘)
   server_port=$(echo ${server_all_list[$i]} | awk -F ‘:‘ ‘{print $2}‘)
       #status:    0,http down    1,http ok    2,http down but ping ok 
       if nc -vv -z -w 10 $server_ip $server_port > /dev/null 2>&1
       then
           status=1
           messages="server $server_ip,port $server_port can‘t access!"
       else
           if ping -c 1 $server_ip > /dev/null 2>&1
           then
               status=2
               messages="server $server_ip,Port $server_port cannot access,but Ping is connected!"
           else
               status=0
               messages="server $server_ip,port $server_port and Ping cannot access!"
           fi
       fi
 
 if [ $status -eq 1 ];then
  grep "$server_ip" mun.tmp > /dev/null 2>&1
  if [ $? -eq 0 ];then
   reset_mun
  fi
 else
  send_msg
 fi
 
   let i++
done

daemon.sh

#!/bin/sh
dir=`pwd`
while true
do
   /bin/sh $dir/tcp.sh > /dev/null 2>&1
   sleep 180
done

service.sh

#!/bin/sh
dir=`pwd`

start() {
ps -ef |grep -v grep|grep daemon.sh > /dev/null 2>&1
if [ $? -eq 0 ];then
	exit
else
	/usr/bin/nohup /bin/sh $dir/daemon.sh 2>&1 > /dev/null &
fi
}

stop() {
	PID=$(ps -ef |grep -v grep|grep daemon.sh|awk ‘{print $2}‘)
	kill $PID
}

reload() {
	stop
	start
}

status() {
ps -ef |grep -v grep|grep daemon.sh > /dev/null 2>&1
if [ $? -eq 0 ];then
	echo "daemon.sh is running..."
else
	echo "daemon.sh is stop"
fi
}

case "$1" in
    start)
        start && exit 0
        $1
        ;;
    stop)
        stop && exit 0
        $1
        ;;
    status)
	status && exit 0
        $1
        ;;
    reload)
        reload && exit 0
        $1
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|reload}"
        exit 2
esac
时间: 2024-12-29 12:23:20

shell迷你版监控脚本的相关文章

shell监控脚本

shell脚本监控网站并实现邮件.短信报警 shell进程监控脚本(发送邮件报警) Shell脚本监控服务器在线状态和邮件报警的方法 如果是139邮箱还可免费手机短信通知.注:通过系统直接发送mail容易被拦截,可使用mail连接第三方smtp发送邮件.

shell实现简单的进程监控脚本

一个简单的需求:shell实现进程监控watchdog功能,配合计划任务每分钟执行一次shell脚本,对进程进行监控,如果意外中断那么启动他,如果正常则什么都不需要去做. #!/bin/bashNAME=javaNOP=/bin/trueDATE=$(/bin/date +”%Y-%m-%d %H:%M:%S”)ps -ef | awk -F ” ” ‘{print $8,$2}’ | grep ^java >/dev/null 2>&1case “$?” in0)# It is ru

shell(4)告警系统-主脚本、配置文件、监控项目

                 告警系统   一.     告警系统主脚本 (脚本存放地址:/usr/local/sbin/) 1.创建脚本存放目录:mkdir /usr/local/sbin/mon/ 1.1创建各个功能模块的目录---存放脚本 cd   /usr/local/sbin/mon/ mkdir bin conf shares log /bin/  存放主脚本 /conf/  存放配置文件 /shares  存放各个监控脚本 /log/    存放日志 主脚本是整个系统的入口,该

Shell开发MySQL主从监控脚本

监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员. 1)开发一个守护进程脚本每30秒实现检测一次. 2)如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误. 阶段3:3)如果IO和SQL线程出现异常,则通知邮件给管理员 使用数组技术实现上述脚本(获取主从判断及错误号部分) 主从监控脚本如下: #!/bin/bash CODE=( 1158 1159 1008 1007 1062 2003 ) fun_Base(){ #1.定义变量 #1.1

AWS Centos磁盘和内存监控脚本

在centos上使用aws硬盘和内存监控脚本,会发现脚本出错,无法正常工作,这是因为aws的官方文档中提到脚本没有在centos上做过测试,并不能保证脚本能使用 如何解决呢,需要安装以下软件: yum install -y perl-CPAN       exportPERL_MM_USE_DEFAULT=1 # setup defaultconfig perl -MCPAN -e shell #进入MCPAN Shell,自动生成默认配置,并退出       # 类似于yum,下载安装各种包,

利用Shell生成Zabbix监控的数字报表

我们都知道Zabbix是一个非常强大的监控工具,我们公司呢也在用Zabbix监控所有网站的状态. 最近有一个需求,就是我们需要生成一份报告,报告里要包含前一天一整天的时间节点和对应的响应时间,这样的报告用来统计网站的可用性达到了什么水准. ? Zabbix本身自带报告功能,可是都是图像的,并没有数据格式的.虽然没有提供数据格式的报表,但是Zabbix提供了一套API,可以根据需求获取对应的数据(JSON格式),于是我就写了个脚本,用来把每个监控的网址的监控数据输出到一个CSV文件中.(后续可以用

几个常用的Linux操作系统监控脚本

本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量.系统状况.主机磁盘空间.CPU和内存的使用情况等方面的自动监控与报警.根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进

linux系统CPU,内存,磁盘,网络流量监控脚本

前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat /proc/loadavg 从系统启动开始到当前累积时刻 4, #uptime 系统运行多长时间 5, #mpstat CPU的一些统计信息 6, # 一,linux系统CPU,内存,磁盘,网络流量监控脚本 [作者:佚名来源:不详时间:2010-7-6 [我来说两句大中小] cme.sh网络流量监

mysql主从同步监控脚本

mysql主从同步监控脚本,利用mysql从库中的IO和SQL进程以及延迟时间来监控主从同步是否正常,详细shell脚本如下: #!/bin/bash #author wangning #date 2017-7-17 #qq 1198143315 #Email [email protected] ################################## define variable############################# define_variable(){ ip