您的位置:首页 > 运维架构 > Shell

一、shell监控网站是否可以访问

2017-03-26 20:21 302 查看
也不知道CSDN怎么搞shell代码块,反正各种都试了一遍,感觉没有一种让代码看起来舒服点的,这里就把文件上传上来。看不清楚的同学可以下载下来,用notepad++看。

里面的一些命令不懂得可以百度搜索一下。后续我会把用到的那些命令解释一下。

下载地址:http://download.csdn.net/detail/qq_34021712/9794638

#!/bin/bash
#func:监控网站是否可以访问
# author:wangsaichao
# date:2017/03/23

#连接的mysql数据库
MYSQL="mysql -h127.0.0.1 -P3306 -uroot -proot"
#查询所有需要监控的网站,这里是查询数据库,这是查询所有状态为1的网站,number字段是ID,这条sql执行完就是查询需要监控点网站的ID,是一个List
sql="select number from fw.tomcat where activestatus='1'"
#开始执行,这里因为要一直监控,所以开启无限循环
while true
do
#向控制台输出一条信息,$(date +'%F %H:%M:%S')日期格式化
echo "[info]开始监控服务...[$(date +'%F %H:%M:%S')]"
#这里是执行sql语句,并把查询到List<Integer ID> 赋值给ref这个变量,注意要带上``号,数字1左边,Esc键下方,如果不带,会报错说 -e这个参数不知道
ref=`$MYSQL -e "$sql"`
#循环遍历查询到的list,shell脚本for循环 格式是:
# for 要赋值变量 in 要遍历的List
# do
# 这里写循环执行的内容
# done
for list in $ref
do
#这里要判断一下,因为shell执行完sql 查询到的内容其实是 number 1 这样的,也就是说只有一条语句但是 shell会把数据库字段也给你放到list中,要筛选一下
if [ $list = 'number' ]; then
echo "$list"
else
#这里是根据遍历的id在此查询数据库,拿到要监控的网址,例如:https://www.baidu.com/
weburl=`$MYSQL -e "select name from fw.tomcat where number=$list"`
for url in $weburl
do
#这里跟上面类似,筛选掉字段名称
if [[ "$url" != 'name' ]]; then
echo $url
#curl命令是查看网站是否可以访问, -I参数是返回http响应头,awk截取文本第二列,再用awk截取第一行,不熟悉的同学可以百度学习一下
ServiceCode=$(curl -s -m 10 --connect-timeout 10 -l $url -w %{http_code} -I|awk '{print $2}'|awk 'NR==1{print}')
if [ $ServiceCode -eq 302 -o $ServiceCode -eq 200 ]; then
echo "服务正常"
$MYSQL -e "update fw.tomcat set runstatus=0 where number=$list"
else
echo "服务无法访问"
$MYSQL -e "update fw.tomcat set runstatus=1 where number=$list"
fi
fi
done
fi
done
sleep 60
done

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: