#!/bin/bash URL_LIST=(' www.baidu.com' 'www.123baidu.com' 'www.baidu.com') #网址列表 for URL in ${URL_LIST[*]}; do FAIL_COUNT=0 #设置一个变量来统计访问失败次数 for ((i=1;i<=3;i++)); do HTTP_CODE=$(curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL) #超时时间是3秒 if [ $HTTP_CODE -eq 200 ]; then echo "$URL OK" #访问正常打印ok break else echo "$URL retry $FAIL_COUNT" let FAIL_COUNT++ #如果不ok的话就执行计数加一 fi done if [ $FAIL_COUNT -eq 3 ]; then #如果FAIL_COUNT=3,就发出告警 echo "Warning: $URL Access failure!" fi done
执行脚本:sh check_url.sh
执行结果如下:
www.baidu.com OK www.123baidu.com retry 0 www.123baidu.com retry 1 www.123baidu.com retry 2 Warning: www.123baidu.com Access failure! www.baidu.com OK
shell脚本和python的思路一样,定义网址列表,遍历列表进行请求判断,如果三次请求都失败,那么发出告警。
本脚本对于新手值得一提的是这行代码“
curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" $URL
”
这是获取网址返回值,是测试中非常常用的方法,一定要记住。-o /dev/null 表示重定向输出,-s表示静默模式,-w %{http_code}表示获取响应码
curl更详细的用法可以参考:https://www.cnblogs.com/duhuo/p/5695256.html