我正在尝试制作一个程序,将一系列漫画扫描转换为一个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
编辑,-s
只是告诉 curl
不要显示 "进度条"。
curl --silent --head --location --output /dev/null --write-out '%{http_code}' http://en.wikipedia.org/wiki/tla | grep '^2'
。 - bukzor--connect-timeout <秒数>
选项是值得的。 - patryk.beza使用 cURL 获取状态码并检查所需的值。
status=$(curl -s --head -w %{http_code} http://www.google.com/ -o /dev/null)
echo $status
首先确保没有授权问题。如果需要授权,请提供用户名和密码。创建一个名为checkURL.sh的shell脚本文件,并粘贴以下代码。
希望这可以帮助您。
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和其他仓库中为我工作。
你总是可以使用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有一个有效的功能,使用其--spider
参数可以实现此目的。如果找到网页,则返回代码为0。对于其他错误,返回代码大于0。
例如:
URL="http://www.google.com"
if wget --spider "$URL" 2>/dev/null; then
echo "$URL web-page exists !"
else
echo "$URL web-page does NOT exists !"
fi