范例10-6:使用while守护进程的方式监控网站,每隔10秒确定一次网站是否正确。
#!/bin/bash export LANG="zh_CN.UTF-8" if [ $# -ne 1 ]; then echo "usage $0 url" exit 1 fi wget -o /dev/null -T 5 --tries=1 $1 --spider #--spider不下载任何文件 a=$? echo "这个url没问题" if [ $a -ne 0 ] then echo "这是一个有问题的url:$1" else while true do sleep 10 wget -o /dev/null -T 5 --tries=1 $1 echo "这个网站是正常的" done fi
另一种方式是使用curl测试:
curl -o /dev/null --connect-timeout 5 -s -w "%{http_code}\n" www.baidu.com:返回网页请求的状态码 -o:把输出写入到文件中 --connect-timeout:连接超时5s -s:静默状态,不输出什么 和-w组合起来可以获得网页的请求的状态码 shell curl 取得HTTP返回的状态码 curl -I -m 10 -o /dev/null -s -w %{http_code} www.baidu.com -I 仅测试HTTP头 -m 10 最多查询10s -o /dev/null 屏蔽原有输出信息 -s silent -w %{http_code} 控制额外输出 [[email protected] ~]# curl -o /dev/null --connect-timeout 5 -s -w %{http_code} www.baidu.com | egrep "200|301|302" | wc -l #如果这个等于1,说明这个网站是正常的。
范例:10-7 使用while守护进程的方式监控网站,每隔10s确定一次网站是否正常。
参考答案1:引入函数库并且采用模拟用户访问的方式并引入邮件报警
#!/bin/bash source /etc/init.d/functions while true do if [ "`curl -o /dev/null --connect-timeout 5 -s -w "%{http_code}\n" "$1" | egrep "200|301|302" | wc -l`" -eq 1 ]; then action "this is URL:$1 is ok" /bin/true else action "this is URL:$1 is bad" /bin/false echo "this URL $1 is bad:`date +%F-%T`" | mail -s "URL test" ***@163.com break fi sleep 10 done
参考答案2:采用shell数组的方法,同时检测多个URL是否正常,并给出专业的展示效果,这是实际的工作所用的脚本。
#!/bin/bash export LANG="zh_CN.UTF-8" source /etc/init.d/functions url=( www.baidu.com www.jd.comm www.taobao.com ) ss() { i=2 while ((i>0)) do echo -n "." sleep 1 ((i--)) done printf ".\n" } aa() { printf "测试准备中,请稍后" ss for ((a=0;a<3;a++)) do wget -o /dev/null -T 5 --tries=1 ${url[a]} b=$? if [ $b -eq 0 ] then action "this URL ${url[a]} is ok" /bin/true else action "this URL ${url[a]} is bad" /bin/false echo "这个URL是有问题的,请及时处理,时间定格在:"`date +%F-%T`"" | mail -s "URL test" [email protected] fi done } while true do aa sleep 10 done
原文地址:http://blog.51cto.com/11726212/2069698
时间: 2024-11-06 02:08:06