海运的博客

用Shell脚本监控服务器并发邮件报警

发布时间:April 15, 2012 // 分类:系统监控,Shell // No Comments

对于服务器来说在线率很重要,出现问题要能及时解决,但系统管理员不能一直守在电脑旁边,通过脚本监控网站出现问题及时通过mail通知管理员,如果是139邮箱还可免费手机短信通知。
通过系统直接发送mail容易被拦截,可使用mail连接第三方smtp发送邮件

#!/bin/bash
#Created by https://www.haiyun.me
#set -x
while true
do
    list=(www.haiyun.me cp.www.haiyun.me)
    mail=onovps@www.haiyun.me
    date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
    i=0
    id=${#list[*]}
    while [ $i -lt $id ] 
    do
        if ping -c1 ${list[$i]} >/dev/null
        then
            echo  $date:服务器${list[$i]}能ping通。
        else
            if curl -m 10  ${list[$i]} > /dev/null 
            then
                echo  $date:服务器${list[$i]} ping不通,能打开网页。
            else
                echo  "您好,据系统监测服务器${list[$i]}不能访问且ping不通,请及时处理!故障发生时间:$date"|mail -s "服务器${list[$i]}不能连接! 故障发生时间:$date" $mail
                until 
                    date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
                    ping -c1 ${list[$i]} >/dev/null && echo "恭喜!服务器${list[$i]}已恢复正常,恢复时间:$date"|mail -s "服务器${list[$i]}已恢复正常! 恢复时间:$date" $mail
                do
                    sleep 5
                done
            fi
        fi
        let i++
    done
    sleep 60
done

执行:

nohup sh /path/file.sh & #放到后台运行,程序60秒检查一次网站。

开机运行:

echo "nohup sh /path/file.sh & " >> /etc/rc.local

标签:linux, shell, server, mail, 服务器监控

发表评论

分类
最新文章
最近回复
  • crowjin: 你确定这能过滤??不是所有请求都返回空地址::?
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了