Shell测试网站链接是否可用

在部署博客时,首先探测目标网站是否畅通是一个必要的环节。然而之前的探测方法依赖于返回码,但是不同的网站返回码不同,所以这不是一个很好的方法,本文的目标就是解决这个探测通用性的问题。

wget方法

wget 探测网站
1
wget --spider -T 5 -q -t 2 https://gitlab.com ; echo $?

若返回值为\(0\), 则表示目标网站可以正常访问,否则表示网络不通。

wget的常用参数为:

1
2
3
4
5
--spider                   模拟爬虫的行为去访问网站,但不会下载网页
-q, --quiet 安静的访问,禁止输出,类似-o /dev/null功能
-o, --output-file=FILE 记录输出到文件
-T, --timeout=SECONDS 访问网站的超时时间
-t, --tries=NUMBER 当网站异常时重试网站的次数

curl方法

curl 探测网站
1
curl -s -o /dev/null https://gitlab.com ; echo $?

若返回值为0, 则代表正常. 这个方法的优点在于与返回的状态码无关,是一个通用方案。

curl 探测网站---状态码方法
1
curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null www.baidu.com

上述方法,会返回一个状态码,若为200则代表www.baidu.com可以正常访问。但是,不同网站的状态码不同,所以这不是一个友好的方案,因此将此方法仅记录在此,但编写脚本时尽量不要使用。

参考文章

  • 测试网站链接是否可用(wget和curl)

  • 注意:在上述文章中,测试代码与echo $?前使用了管道符号|, 这是不对的. 在本文中已经更正为;, 这表示无论前面的代码是否正确运行后面的echo照样执行,这样才能正确返回上一步的$?状态,实现准确判断。