我有一个需要检查的 URL 列表,看看它们是否仍然有效。我想编写一个 bash 脚本来为我做到这一点。
我只需要返回的 HTTP 状态代码,即 200、404、500 等。而已。
EDIT请注意,如果页面显示“404 not found”但返回 200 OK 消息,则存在问题。这是一个配置错误的 Web 服务器,但您可能必须考虑这种情况。
有关这方面的更多信息,请参阅检查 URL 是否转到包含文本“404”的页面 https://stackoverflow.com/questions/6439993/check-if-a-url-goes-to-a-page-containing-the-text-404
Curl 有一个特定的选项,--write-out
, 为了这:
$ curl -o /dev/null --silent --head --write-out '%{http_code}\n' <url>
200
-
-o /dev/null
丢弃通常的输出
-
--silent
扔掉进度表
-
--head
发出 HEAD HTTP 请求,而不是 GET
-
--write-out '%{http_code}\n'
打印所需的状态代码
要将其包装在完整的 Bash 脚本中:
#!/bin/bash
while read LINE; do
curl -o /dev/null --silent --head --write-out "%{http_code} $LINE\n" "$LINE"
done < url-list.txt
(目光敏锐的读者会注意到,这对每个 URL 使用一个curl 进程,这会造成分叉和 TCP 连接惩罚。如果将多个 URL 组合在一个curl 中,速度会更快,但没有空间来写出巨大的重复卷曲需要执行此操作的选项。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)