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