通过抓取网页指定关键字进行报警脚本

#!/bin/bash
# Check system info: Disk Info, Top info
# Written by brian
# exp:
# nohup /bin/sh get_http.sh >/dev/null & 

#需要监控的网站列表和关键定义
weblist=`cat weblist`

#报警配置文件
alertlog='alert.log'

#邮件发送日志文件
mailsendlog='mailsend.log'

#详细日志文件
detaillog='detail.log'

#收件邮件列表
maillist='xx@163.com,yy@163.com'

mailsend(){

        str=$1
        code=$2

        if [ ! -f $alertlog ]
        then
                
                >$alertlog
        
        fi
        
        keven=`echo $str|grep scjhym`
        #对特殊网站进行邮件收件人地址重写
        if [[ ! -z $keven ]]
        then
                maillist='zz@163.com'
        fi
                
                ip=`echo $str|awk -F'|' '{print $1}'`
                site=`echo $str|awk -F'|' '{print $2}'`
                comstr=$ip"|"$site
                if grep $comstr $alertlog
                        then
                                lstr=`grep $comstr $alertlog`
                                second=`echo $lstr|awk -F'|' '{print $4}'`
                                #计算当前时间和最近一次报警时间的间隔
                                midtime=`expr $(date +%s) - $second`
                                num=`echo $lstr|awk -F'|' '{print $5}'`
                                if [[ $num -lt 2 ]]
                                then
                                        
                                        if [[ $midtime -gt 300 ]]
                                        then
                                        
                                                comstr=`echo "$comstr"|/bin/sed -e 's#/#\\\/#g'`
                                                /bin/sed -i "/$comstr/d" $alertlog >/dev/null
                                                newstr=$str"|"$(date +%s)"|"`expr $num + 1`
                                                
                                                mailcontent=$ip"_"$site" is error,code: "$code",keyword: "`echo $str|awk -F'|' '{print $3}'`",notify num: "`expr $num + 1`
                                                echo $mailcontent | mutt -s "$ip:http notify" $maillist
                                                echo $newstr >> $alertlog
                                                echo `date +"%Y-%m-%d %H:%M:%S"`" $site" >> $detaillog
                                                echo `/usr/bin/curl -s $site` >> $detaillog
                                                echo "-------------------------------------" >> $detaillog
                                                echo `date +"%Y-%m-%d %H:%M:%S"`" "$mailcontent >> $mailsendlog
                                        
                                        fi
                                        
                                fi
                                
                        else
                                
                                        mailcontent=$ip"_"$site" is error,code: "$code",keyword: "`echo $str|awk -F'|' '{print $3}'`",notify num: 1。"
                                                echo $mailcontent | mutt -s "$ip:http notify" $maillist                                                                                                
                                                newstr=$str"|"$(date +%s)"|1"
                                                echo $newstr >> $alertlog
                                                echo `date +"%Y-%m-%d %H:%M:%S"`"$site" >> $detaillog
                                                echo `/usr/bin/curl -s $site` >> $detaillog 
                                                echo "-------------------------------------" >> $detaillog
                                                echo `date +"%Y-%m-%d %H:%M:%S"`" "$mailcontent >> $mailsendlog
                                                        
                                
                fi
                
                
        

}


doCheck(){
    for i in $weblist
        do
                
                ip=`echo $i|awk -F'|' '{print $1}'`
                site=`echo $i|awk -F'|' '{print $2}'`
                keywords=`echo $i|awk -F'|' '{print $3}'`
                http_code=`/usr/bin/curl -o /dev/null -s -w %{http_code} -m 10 $site`
                keystats=`/usr/bin/curl -s $site|grep "$keywords"`
                
                if [[ -z $keystats ]]
                then
                        sleep 5

                        keystats=`/usr/bin/curl -s $site|grep "$keywords"`

                        if [[ -z $keystats ]]

                        then        mailsend $i $http_code
                        
                        fi

                else

                        if grep $ip"|"$site $alertlog
                        then
                                cstr=`echo $ip"|"$site|/bin/sed -e 's#/#\\\/#g'`
                                /bin/sed -i "/$cstr/d" $alertlog >/dev/null
                                echo `date +"%Y-%m-%d %H:%M:%S"`" "$i" is OK!" >> $mailsendlog
                        fi
                                
                fi

        done
}

while true
do
        doCheck > /dev/null &
        #每隔二十秒检查一次
        sleep 20
        
done


#######################
#####weblist配置文件格式#####
#IP地址|URL地址|关键字#######
#222.249.9.X|http://www.xxx.com|keywords
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值