监控网站80端口的脚本

发布时间:2019-07-20编辑:脚本学堂
监控网站80端口的脚本

脚本原理把所有要监控的网站dig IP出来,然后测试该IP的80端口是否能通,如果不通的话,则把在该IP上的所有站点列出来并报警。

这个是我最后修改的版本,10秒运行完161个站点(含在CDN的站点)所有检测,把需要检测的域名写到文件80_URL.txt 里面 每个域名一行。
注意:只能写域名,不要写具体的url,例如:
cat /root/sh/80_URL.txt
www.baidu.com
www.qq.com
www.163.com

部份常量说明
ERROR    判断是否有异常,初始值0  有异常1   为1时发送邮件通知。通知方式参考:http://www.jb200.com/article/2609.html
ERROR_TEMP       一个域名多次检测 我配置6次异常的话,ERROR=1
Port                        检测端口   默认80
DATE                     当前时间
YouJianFuJian.txt   邮件附件,记录当时的dig 域名出来的结果。
/root/jiankong_log  习惯把监控的日志放这里了,呵~

脚本内容:
 

复制代码 代码如下:

#!/bin/bash
mkdir -m 777 /root/jiankong_log
export LANG=en_US.UTF-8    
Port=80
ERROR_TEMP=0
ERROR=0
DATE=`date +%Y-%m-%d" "%k:%M`
echo "$DATE from 121.11.121.177 check 80 error:">/root/jiankong_log/YouJianZhengWen.txt       //标志从台检测出来的,因为我有2台监控
biaoti=''
echo "">/root/jiankong_log/YouJianFuJian.txt
echo "-------"$DATE"-------" >>/root/jiankong_log/80jianche.log
echo ''>/root/jiankong_log/ip_tmp.txt
echo "-----------"$DATE"---------">>/root/jiankong_log/error_temp.txt
###################
for Domain in `cat /root/sh/80_URL.txt`
do
    echo "------------------$Domain--------------------">>/root/jiankong_log/YouJianFuJian.txt
#START###以下是检测域名是否dig为空的代码,根据情况选择是否开启######
#    empty_temp=0

#for i in {1..6}
#    do   
#    a=`dig +short $Domain | head -n 1`
#    if [ "$a" != "" ]; then
#    break;
#    else
#    empty_temp=`expr $empty_temp "+" 1`
#    ping -c 5 $Domain
#    sleep 2
#    fi
#    if [ "$empty_temp" == "6" ];then
#    echo "$Domain dig empty" >>/root/jiankong_log/YouJianZhengWen.txt
#    echo "$Domain dig empty" >>/root/jiankong_log/YouJianFuJian.txt
#    echo "$Domain dig empty" >>/root/jiankong_log/80jianche.log
#    ERROR=1
#    biaoti="$biaoti"-"$Domain"
#    fi
#    done
#END###以上是检测域名是否dig为空的代码,根据情况选择是否开启######
####
for IP in `dig +short $Domain`
    do
    echo "$IP" >>/root/jiankong_log/ip_tmp.txt
    echo "$Domain -----> $IP" >>/root/jiankong_log/YouJianFuJian.txt
    done
done
######################
cat /root/jiankong_log/ip_tmp.txt |grep -v ^$| sort -r | uniq | grep "." >/root/jiankong_log/ip.txt
for newip in `cat /root/jiankong_log/ip.txt |grep -v "#"|grep -Ev "com|58.253.70|221.5" `
do
    ERROR_TEMP=0
    for n in {1..6}      //检测次数
  do
    nmap -sT $newip -p $Port | grep open
    if [ "$?" == "0" ];then
    break;        //检测到80端口有开,马上跳出此次循环。
    else
    ERROR_TEMP=`expr $ERROR_TEMP "+" 1`
    echo "$newip error in ---- $n ----" >>/root/jiankong_log/error_temp.txt
    fi
    if [ "$ERROR_TEMP" == "6" ];then
    ERROR=1
    biaoti="$biaoti"-"$Domain"
    grep $newip /root/jiankong_log/YouJianFuJian.txt >>/root/jiankong_log/YouJianZhengWen.txt
    grep $newip /root/jiankong_log/YouJianFuJian.txt >>/root/jiankong_log/80jianche.log
    fi
  done
done
if [ "$ERROR" == "1" ];then
cat /root/jiankong_log/YouJianZhengWen.txt | /usr/local/mutt/bin/mutt -s "$biaoti is error" 1516070****@139.com -c 281450202@qq.com -a /root/jiankong_log/YouJianFuJian.txt        //这里的邮件发送方式参考我的另一个,或者根据自己的情况去改下。
else
echo "all is nothing" >>/root/jiankong_log/80jianche.log
fi
 

复制到文件里面,然后执行,如果文件路径都正常,是可以的。
www_monitor