如何通过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只是将输出(如果有的话)发送到垃圾箱。

我知道这是逾期的,但我希望这有助于。

wgetcURL将完成这项工作。 有关详细信息和下载位置,请参阅此处的wget或cURL 。 提供这些命令行工具的URL并检查响应。