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

来源:互联网 发布:淘宝手机壳店 编辑:程序博客网 时间:2024/05/21 13:57

也不知道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,是一个Listsql="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#这里写循环执行的内容#donefor list in $refdo #这里要判断一下,因为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 $weburldo#这里跟上面类似,筛选掉字段名称if [[ "$url" != 'name' ]]; thenecho $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"fifidonefidone sleep 60done



0 0
原创粉丝点击