linux下自动检测服务端口是否正常监听。

时间:2015-12-26 23:48:13   收藏:0   阅读:2201


脚本说明:

    1、检查服务器的各端口服务是否正常。

    2、服务端口如果没有正常监听,将自动重启该端口服务,记录日志,并发邮件通知管理员。

    3、让crontab每5分钟自动执行该脚本。

    4、脚本调用了sendEmail来发邮件,请自行谷歌百度装sendEmail。再次提醒是sendEmail 不是sendmail  。。。



[root@node2 ~]# cat monitor.sh

#!/bin/bash

#

# description:  service check

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin


Email(){

  Send=SendEmail@163.com                    #用来发邮件的邮箱,我这里是用的163邮箱

  Pass=SendEmailPass                       #用来发邮件的邮箱密码

  Recv=RecvEmail@qq.com                      #用来接收邮件通知的邮箱,我这里是qq邮箱

  IPADDR=eth0                                      #邮件正文中指明是哪个服务器哪个网卡的IP地址

  /usr/local/bin/sendEmail -f "$Send" -t "$Recv" -s smtp.163.com -xu "$Send" -xp "$Pass" -o message-charset=utf8 -u "$i port service is restarted." -m "$i port service is restarted, Please check the server whether there are abnormal.\n\n\n`ifconfig ${IPADDR}`" &> /dev/null

}


LOG(){

  echo -e "`date +%F_%T`  "$i" service restart...\n`vmstat`\n\n" >> /tmp/monitor.log    #记录日志

}


for i in 22 80 3306 9000; do           #要检查的端口,各端口之间用空格分隔

  netstat -tnl | awk ‘NR>2{print $4}‘ | grep ":$i\>$" &> /dev/null

  if ! [ $? -eq 0 ]; then

    case "$i" in

      22)

        service sshd restart &> /dev/null

        LOG

        Email

        ;;

      80)

        service nginx restart &> /dev/null

        LOG

        Email

        ;;

      3306)

        service mysqld restart &> /dev/null

        LOG

        Email

        ;;

      9000)

        service php-fpm restart &> /dev/null

        LOG

        Email

        ;;

    esac

  fi

done


本文出自 “换个角度看世界” 博客,请务必保留此出处http://netvn.blog.51cto.com/8370732/1728599

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!