站群是一个很庞大的IP+域名的群体,多则几千个,少则几十个起码的!那么这么多的站群怎么去监控它的状态是正常的呢?现在市面上很多比如阿里云监控,监控宝什么的一大堆.但是Sandy懒的很不想一个一个去添加,所以Sandy还是比较倾向于Shell.网站很多大神都写有方案,看了一下基本都是15年之前写的.前人累积 后人拾遗,那么Sandy就来更新以及抄袭一下大神之作.废话不多说~"来屎狗"
老规矩这里要先列出执行脚本的环境:
操作系统:Ubuntu 16.x
使用到的组件:sendmail mutt
1.安装sendmail
apt-get install sendmail
/etc/init.d/sendmail start
需要安装sendmail并开启防火墙的25端口,如果你需要收邮件110端口也要开!
2.安装mutt邮件客户端,并设置相关信息
apt-get install mutt
vi /root/.muttrc
set charset="utf-8" #设置发邮件编码
set use_envelope_from=yes
set rfc2047_parameters=yes #解决附件乱码问题
set realname="报警" #发件人别名
set use_from=yes #指定是否显示别名
set from=root@localhost #发送人地址,当前主机名称,若配置其他邮箱,需配置协议主机名和密码
3.建立url列表
vi url
www.baid1u.com #故意写错百度域名,等会测试用!多个域名则一行一个
4、创建脚本:check_web.sh
#!/bin/bash
#====================================================
# Author: sandy
# Last modified: 2018-4-17
# Filename: check_web.sh
# blog:http://blog.e9china.net
#====================================================
while true
do
Mail="xxxxx@163.com"
FailCount=0
Retval=0
GetUrlStatus() {
for ((i=1;i<=3;i++)) #使用i++判断访问次数,如果wget两次超时则判断网站异常
do
wget -T 3 --tries=1 --spider http://${1} >/dev/null 2>&1
#-T超时时间,--tries尝试1次,--spider蜘蛛
[ $? -ne 0 ] && let FailCount+=1; #访问超时时,$?不等于0,则FailCount加1
done
if [ $FailCount -gt 1 ];then
Retval=1
Date=`date +%F" "%H:%M`
echo -e "时间 : $Date\n问题 : $url 您的网站未能运行,请赶紧处理!" | mutt -s "WEB网站监控" $Mail
else
Retval=0
fi
return $Retval #如果返回值为0,就正常退出循环,不为0则继续循环
}
for url in `cat url | sed '/^#/d'`
do
#GetUrlStatus $url && echo yes || echo no
GetUrlStatus $url
done
sleep 2m #死循环,设置没2分钟运行一次
done
5.检查文件
root@host:~# ls
root@host:~# check_web.sh Mail url #如果检查以后出现报警就多出一个sent的文件
6.测试运行
bash check_web.sh
在生成环境下使用
root@host:~# screen -S web
root@host:~# bash check_web.sh
也可以使用crontab来,具体方法就不多说.具体看以往的帖子
巧妙的利用Google AdSense的网页级广告增加自己的收入 老板.这个文章我为什么不可以评论..