当我们做网站维护工作时,需要经常对网站进行状态监控,定期检测网站是否能正常访问、响应时间等。本篇攻略将介绍如何使用Shell和Curl命令来编写网站状态检查脚本,抓出无法访问的站点。
1. 脚本原理
该脚本通过使用Curl命令对指定站点进行请求,并返回http状态码进行判断,以此来检测网站是否能正常访问。如果请求失败或返回5xx状态码(服务器错误),则视为网站无法访问。
2. 编写脚本
我们可以使用以下代码来编写Shell+Curl网站状态检查脚本:
#!/bin/bash
# set the list of URLs to check
url_list=("https://www.example.com" "https://www.google.com")
# loop through the list and check the status code for each URL
for url in ${url_list[@]}; do
status_code=`curl -I -s $url -w "%{http_code}" -o /dev/null`
if [[ "$status_code" =~ ^5 ]]; then
echo "$url is down (HTTP status code $status_code)"
elif [[ "$status_code" == "000" ]]; then
echo "$url is down (Connection refused)"
else
echo "$url is up and running (HTTP status code $status_code)"
fi
done
上述代码中,我们首先定义了一个url_list数组,其中存放了需要检测的网站地址。然后使用for循环遍历每个网站地址,并在循环内部执行curl命令进行状态码的检查。其中参数-I表示只返回头部信息,-s表示silent(静默)模式,不输出请求信息和进度条,-w参数用来自定义输出格式,这里指定输出http状态码,-o参数用于不保存下载的文件到本地,而将其输出到/dev/null(垃圾桶)中,以此来提高效率,避免磁盘空间的占用。
当状态码为5xx时(服务端错误),我们将其视为无法访问的站点,并输出到控制台。如果状态码为000,表示访问时出现连接拒绝的错误,同样被视为网站无法访问。最后,对于其他状态码,我们将其视为网站正常运作,并输出到控制台。
3. 案例演示
我们来通过两个实例演示该脚本的使用。
3.1 演示1:检查单个网站
我们先尝试使用该脚本来检查单个网站。
如下所示,我们将要检查的网站地址放入url_list数组中,然后在终端执行该脚本:
#!/bin/bash
url_list=("https://www.example.com")
for url in ${url_list[@]}; do
status_code=`curl -I -s $url -w "%{http_code}" -o /dev/null`
if [[ "$status_code" =~ ^5 ]]; then
echo "$url is down (HTTP status code $status_code)"
elif [[ "$status_code" == "000" ]]; then
echo "$url is down (Connection refused)"
else
echo "$url is up and running (HTTP status code $status_code)"
fi
done
执行该脚本后,我们可以看到输出结果如下:
https://www.example.com is up and running (HTTP status code 200)
因为该网站可以正常访问,所以输出结果为网站处于可运行状态。
3.2 演示2:检查多个网站
我们尝试使用该脚本来检查多个网站的运行状态。
如下所示,我们在url_list数组中填写了两个需要检查的网站地址,分别是https://www.example.com和https://www.google.com。然后在终端中执行该脚本:
#!/bin/bash
url_list=("https://www.example.com" "https://www.google.com")
for url in ${url_list[@]}; do
status_code=`curl -I -s $url -w "%{http_code}" -o /dev/null`
if [[ "$status_code" =~ ^5 ]]; then
echo "$url is down (HTTP status code $status_code)"
elif [[ "$status_code" == "000" ]]; then
echo "$url is down (Connection refused)"
else
echo "$url is up and running (HTTP status code $status_code)"
fi
done
执行该脚本后,我们可以看到输出结果如下:
https://www.example.com is up and running (HTTP status code 200)
https://www.google.com is up and running (HTTP status code 200)
在这个例子中,我们检测了两个网站地址,结果显示它们都正常运行。
4. 总结
通过本篇攻略的介绍,我们学习了如何使用Shell和Curl命令来编写网站状态检查脚本,并演示了如何在终端上使用该脚本来检测单个或多个网站的运行状态。了解和掌握该脚本的使用方法,可以方便我们进行网站监控和状态管理,及时排查和修复网站的故障和问题,提高网站的稳定性和可用性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Shell+Curl网站状态检查脚本 抓出无法访问的站点 - Python技术站