如何确定是否存在带有shell脚本的网页?

时间:2010-05-27 19:55:22

标签: shell unix

我正在尝试制作一个程序,可以将一系列漫画扫描转换为一个pdf文件,我不想尝试下载图片以确定我是否有正确的网址。是否有shell脚本命令可以用来检查网页是否存在?

5 个答案:

答案 0 :(得分:101)

在* 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

编辑 -s只是告诉curl不显示“进度条”。

答案 1 :(得分:21)

使用cURL获取状态代码并检查所需的值。

status=$(curl -s --head -w %{http_code} http://www.google.com/ -o /dev/null)
echo $status

答案 2 :(得分:9)

首先确保没有授权问题。如果需要任何授权,则提供用户名和密码。创建一个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和其他存储库中为我工作。

答案 3 :(得分:2)

您可以随时使用wget;我这样做,因为代码更简单。

 if [[ $(wget http://url/ -O-) ]] 2>/dev/null
  then echo "This page exists."
  else echo "This page does not exist."
 fi

-O-选项与wget一起使用意味着它将尝试输出页面内容,但前提是它存在。因此,如果没有任何输出,那么页面就不存在了。 2>/dev/null只是将输出(如果有的话)发送到垃圾箱。

我知道它已经过期了,但我希望这会有所帮助。

答案 4 :(得分:-2)

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