[root@jason ~]# cat check_url.sh
#!/bin/bash
. /etc/init.d/functions #加载系统函数库
RETVAL=0 #定义初始变量为0,后边做返回值用
script_path=/root #定义脚本路径
mail_group="280834114@qq.com" #群组邮箱,可写多个地址
phone_group="18220858831" #群组手机号码
log=/tmp/check_url.log #日志路径
failcount=0 #定义初始失败次数为0
function GetUrlStatus(){ #函数
for ((i=1;i<=3;i++))
do
wget -T 2 -q --spider http://${1} >&/dev/null #检查网站是否正常 ${1}为参数
[ $? -ne 0 ]&& let failcount+=1 #如果检查一次不正常 failcount变量自增1
done
if [ $failcount -gt 1 ];then #如果failcount大于1,即检查失败2次,则报警 接下来是报警内容
RETVAL=1
nowtime=`date +"%m-%d %H:%M:%S` #时间
content="$HOSTNAME service is error,${nowtime}." #报警内容
. /etc/init.d/functions #加载系统函数库
RETVAL=0 #定义初始变量为0,后边做返回值用
script_path=/root #定义脚本路径
mail_group="280834114@qq.com" #群组邮箱,可写多个地址
phone_group="18220858831" #群组手机号码
log=/tmp/check_url.log #日志路径
failcount=0 #定义初始失败次数为0
function GetUrlStatus(){ #函数
for ((i=1;i<=3;i++))
do
wget -T 2 -q --spider http://${1} >&/dev/null #检查网站是否正常 ${1}为参数
[ $? -ne 0 ]&& let failcount+=1 #如果检查一次不正常 failcount变量自增1
done
if [ $failcount -gt 1 ];then #如果failcount大于1,即检查失败2次,则报警 接下来是报警内容
RETVAL=1
nowtime=`date +"%m-%d %H:%M:%S` #时间
content="$HOSTNAME service is error,${nowtime}." #报警内容
echo "send to :$mail_group ,title:$content" > $log #写入日志的内容
for mail_user in $mail_group #从邮箱组中循环取邮箱地址
do
mail -s "$content" $mail_user < $log #发送邮件 并导入并发送$log日志中的内容
done
else
RETVAL=0 #如果检查正常 则返回值变量仍为0
fi
return $RETVAL
}
#check_list: #定义一个所检查网站的文件,所检测网站均在这个文件中
cat >$script_path/ip_domain.list<<EOF
192.168.1.220
www.baidu.com
EOF
#service check
for url in `cat $script_path/ip_domain.list` #url变量从文件选取要检查的网站
do
echo -n "checking $url: " #显示检查的哪个网站
GetUrlStatus $url && action "successful" /bin/true ||\ #调用函数 $url 即为函数中的${1}
action "failure" /bin/false
done
for mail_user in $mail_group #从邮箱组中循环取邮箱地址
do
mail -s "$content" $mail_user < $log #发送邮件 并导入并发送$log日志中的内容
done
else
RETVAL=0 #如果检查正常 则返回值变量仍为0
fi
return $RETVAL
}
#check_list: #定义一个所检查网站的文件,所检测网站均在这个文件中
cat >$script_path/ip_domain.list<<EOF
192.168.1.220
www.baidu.com
EOF
#service check
for url in `cat $script_path/ip_domain.list` #url变量从文件选取要检查的网站
do
echo -n "checking $url: " #显示检查的哪个网站
GetUrlStatus $url && action "successful" /bin/true ||\ #调用函数 $url 即为函数中的${1}
action "failure" /bin/false
done