2010-05-27 91 views
48

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

+0

哪个外壳? UNIX shell? Windows命令提示符? Windows Powershell? – zneak 2010-05-27 20:00:10

+0

UNIX,我猜,因为它有一个unix标签。 – thepiercingarrow 2016-03-25 00:01:14

回答

87

下一个* NIX,您可以用curl发出一个简单的HEAD请求(HEAD只要求头,而不是页面正文):

curl --head http://myurl/ 

然后,你可以只需要第一线,包含HTTP状态代码(200 OK,404未找到,等):

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不显示“进度条”。

+3

为了减少字符串解析并检查重定向到不存在的页面,可以使用'curl --silent --head --location --output/dev/null --write-out'%{http_code}' http://en.wikipedia.org/wiki/tla | grep'^ 2'' – bukzor 2013-08-16 16:39:18

+3

使用--fail:http://stackoverflow.com/a/12199125/376366 – 2013-11-29 23:18:00

+0

脚本可自动验证多个文件:https://gist.github.com/igilham/12eb33ab8a86f1e815d2 – IanGilham 2014-09-18 16:05:15

-2

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

+0

Pfff ...为什么downvotes(没有解释,介意你),如果答案是正确的,简要的和内容丰富的? – 2016-03-02 12:03:15

+1

我没有投票,但如果我不得不猜测,这是因为只有URL的答案[不鼓励](https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-链接别处 - 真的好 - 答案)。 – zneak 2017-07-20 00:08:11

+0

谢谢。 TBH,问题是“是否有shell脚本命令可以用来检查网页是否存在?”我的回答是“wget或cURL将完成这项工作”,以及指向每个命令的链接以及可以检查这些命令调用的响应的解释。从任何角度来看,这不仅仅是一个URL唯一的答案,而且与当时出现的其他答案(修订版)一样:https://stackoverflow.com/revisions/2924444/1。唉,显然是一个糟糕的业力日:-) – 2017-07-22 13:39:32

17

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

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

首先确保没有授权任何issue.If要求授权,您提供的用户名和密码.Create一个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和其他信息库为我工作。

1

您可以随时使用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只是将输出(如果有的话)发送到垃圾箱。

我知道这是逾期,但我希望这可以帮助。

相关问题