帮助中心

使用 CURL 检查网站可用性 打印

  • 0
  • curl
在命令行操作中,使用 curl 来检查网站的可用性是一种常见且有效的方法。我们可以通过分析 HTTP 状态码、响应时间或页面内容,来判断网站是否正常运行。以下是详细的操作步骤与示例:

1. 基本用法:检查 HTTP 状态码

curl -I -s -o /dev/null -w "%{http_code}\n" https://example.com

参数说明:
  • -I:仅获取响应头,采用 HEAD 请求,这种方式更为高效。
  • -s:启用静默模式,不会显示进度信息或错误提示。
  • -o /dev/null:将响应体输出到空设备,也就是丢弃响应内容。
  • -w "%{http_code}\n":输出 HTTP 状态码。
结果判断:
  • 200:表示请求成功,网站正常。
  • 301/302:意味着网站发生了重定向。
  • 4xx:代表客户端出现错误,例如 404 表示页面不存在。
  • 5xx:表示服务器端出现错误,例如 502 是网关错误。

2. 处理重定向

如果网站存在重定向情况(例如从 HTTP 重定向到 HTTPS),可以使用 -L 参数来跟随重定向:

curl -L -I -s -o /dev/null -w "%{http_code}\n" https://example.com

3. 检查超时

你可以设置连接和传输的超时时间(单位为秒):

curl --connect-timeout 5 --max-time 10 -I -s -o /dev/null -w "%{http_code}\n" https://example.com

  • --connect-timeout 5:设置连接超时时间为 5 秒。
  • --max-time 10:设定整个请求的最大耗时为 10 秒。

4. 忽略证书错误(仅适用于测试环境)

对于使用自签名证书或者证书已过期的网站,可以跳过 SSL 验证:

curl -k -I -s -o /dev/null -w "%{http_code}\n" https://example.com

-k 或 --insecure:用于忽略 SSL 证书验证,但要注意这存在一定的安全风险。

5. 检查响应内容

若需要验证页面内容是否包含特定关键字(例如 "Welcome"),可以使用以下命令:
 
curl -s https://example.com | grep -q "Welcome" && echo "OK" || echo "Failed"

6. 完整脚本示例

将以下脚本保存为 check_website.sh,并赋予其执行权限(chmod +x check_website.sh):
#!/bin/bash

URL="https://example.com"
EXPECTED_STATUS="200"
TIMEOUT=5

# 获取 HTTP 状态码
STATUS_CODE=$(curl -L -I -s -o /dev/null --connect-timeout $TIMEOUT -w "%{http_code}" $URL)

# 判断结果
if [ "$STATUS_CODE" == "$EXPECTED_STATUS" ]; then
  echo "[OK] $URL returned $STATUS_CODE"
  exit 0
else
  echo "[ERROR] $URL returned $STATUS_CODE (expected $EXPECTED_STATUS)"
  exit 1
fi

7. 进阶用法:输出详细信息

你还可以获取更多的调试信息,例如 DNS 解析时间、总耗时等:
 
curl -w "\n
HTTP Code: %{http_code}
DNS Time: %{time_namelookup}s
Connect Time: %{time_connect}s
Total Time: %{time_total}s\n" -s -o /dev/null https://example.com

常见 HTTP 状态码

状态码 含义
200 请求成功
301 永久重定向
302 临时重定向
400 错误请求
401 未授权
403 禁止访问
404 页面不存在
500 服务器内部错误
502 网关错误
503 服务不可用

注意事项

  • 在判断网站可用性时,要结合状态码和页面内容进行综合判断。例如,状态码为 200 但页面内容缺失,可能表示网站存在部分故障。
  • 对于生产环境的监控,建议使用专业的监控工具,如 Prometheus、Nagios 或 UptimeRobot。
  • 频繁的请求可能会被防火墙拦截,因此需要谨慎设置检查频率。

 

通过上述方法,你可以快速诊断网站的可用性问题。
这篇文章有帮助吗?
« 返回