我有一个需要检查的URLS列表,看看它们是否仍然有效。我想写一个bash脚本来帮我做到这一点。
我只需要返回的HTTP状态码,即200、404、500等等。没别的了。
编辑请注意,如果页面显示"404未找到“,但返回200 OK消息,则会出现问题。这是一个配置错误的web服务器,但您可能必须考虑这种情况。
有关这方面的更多信息,请参阅Check if a URL goes to a page containing the text "404"
发布于 2012-02-25 18:40:37
wget --spider -S "http://url/to/be/checked" 2>&1 | grep "HTTP/" | awk '{print $2}'
仅为您打印状态代码
发布于 2014-03-13 21:20:22
扩展了Phil已经提供的答案。如果您使用xargs进行调用,那么在bash中添加并行性是不需要动脑筋的。
代码如下:
xargs -n1 -P 10 curl -o /dev/null --silent --head --write-out '%{url_effective}: %{http_code}\n' < url.lst
-n1:只使用一个值(来自列表)作为curl调用的参数
-P10:随时保持10个curl进程活动(即10个并行连接)
查看curl手册中的write_out
参数,了解可以使用它提取的更多数据(时间等)。
如果它对某人有帮助,这是我目前使用的呼叫:
xargs -n1 -P 10 curl -o /dev/null --silent --head --write-out '%{url_effective};%{http_code};%{time_total};%{time_namelookup};%{time_connect};%{size_download};%{speed_download}\n' < url.lst | tee results.csv
它只是将一堆数据输出到csv文件中,该文件可以导入到任何办公工具中。
发布于 2011-05-26 17:25:08
使用curl
只获取HTTP-header (而不是整个文件)并解析它:
$ curl -I --stderr /dev/null http://www.google.co.uk/index.html | head -1 | cut -d' ' -f2
200
https://stackoverflow.com/questions/6136022
复制相似问题