Shell测试网站链接是否可用
在部署博客时,首先探测目标网站是否畅通是一个必要的环节。然而之前的探测方法依赖于返回码,但是不同的网站返回码不同,所以这不是一个很好的方法,本文的目标就是解决这个探测通用性的问题。
wget方法
1 | wget --spider -T 5 -q -t 2 https://gitlab.com ; echo $? |
若返回值为\(0\), 则表示目标网站可以正常访问,否则表示网络不通。
wget
的常用参数为:
1 | --spider 模拟爬虫的行为去访问网站,但不会下载网页 |
curl方法
1 | curl -s -o /dev/null https://gitlab.com ; echo $? |
若返回值为0, 则代表正常. 这个方法的优点在于与返回的状态码无关,是一个通用方案。
1 | curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null www.baidu.com |
上述方法,会返回一个状态码,若为200
则代表www.baidu.com
可以正常访问。但是,不同网站的状态码不同,所以这不是一个友好的方案,因此将此方法仅记录在此,但编写脚本时尽量不要使用。
参考文章
注意:在上述文章中,测试代码与
echo $?
前使用了管道符号|
, 这是不对的. 在本文中已经更正为;
, 这表示无论前面的代码是否正确运行后面的echo
照样执行,这样才能正确返回上一步的$?
状态,实现准确判断。