如何通过shell脚本确定网页是否存在?
我试图制作一个程序,可以将一系列的漫画扫描转换成一个PDF文件,我不想尝试下载图片,以确定我是否有正确的url。 有没有一个shell脚本命令,我可以用来检查网页是否存在?
在* NIX下,你可以使用curl
来发出一个简单的HEAD
请求( HEAD
只要求标题,而不是页面主体):
curl --head http://myurl/
那么你只能取第一行,其中包含HTTP状态码(200 OK,404 Not Found等):
curl -s --head http://myurl/ | head -n 1
然后检查你是否得到了体面的回应(状态码是200或3 **):
curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].."
这将输出第一行,如果状态代码是好的,或没有,如果不是。 你也可以将它传递给/ dev / null以获得输出,并使用$?
确定它是否工作或否:
curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null # on success (page exists), $? will be 0; on failure (page does not exist or # is unreachable), $? will be 1
编辑 –只是告诉curl
不显示“进度条”。
使用cURL获取状态码并检查所需的值。
status=$(curl -s --head -w %{http_code} http://www.google.com/ -o /dev/null) echo $status
首先确保没有授权问题。如果需要授权,则提供用户名和密码。创build一个shell脚本文件(checkURL.sh)并粘贴下面的代码。
希望这会帮助你。
checkURL.sh
yourURL="http://abc-repo.mycorp.com/data/yourdir" if curl --output /dev/null --silent --head --fail "$yourURL" then echo "This URL Exist" else echo "This URL Not Exist" fi
它在Nexus和其他Repository中为我工作。
你总是可以使用wget
; 我做的代码更简单。
if [[ $(wget http://url/ -O-) ]] 2>/dev/null then echo "This page exists." else echo "This page does not exist." fi
对wget
使用-O-
选项意味着它将尝试输出页面的内容,但只有在存在的情况下。 所以如果没有任何输出,那么这个页面就不存在了。 2>/dev/null
只是将输出(如果有的话)发送到垃圾箱。
我知道这是逾期的,但我希望这有助于。
wget或cURL将完成这项工作。 有关详细信息和下载位置,请参阅此处的wget或cURL 。 提供这些命令行工具的URL并检查响应。