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

Bra*_*den 55 unix shell

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

zne*_*eak 106

在*NIX下,您可以curl用来发出一个简单的HEAD请求(HEAD只询问标题,而不是页面正文):

curl --head http://myurl/
Run Code Online (Sandbox Code Playgroud)

然后你只能拿第一行,其中包含HTTP状态代码(200 OK,404 Not Found等):

curl -s --head http://myurl/ | head -n 1
Run Code Online (Sandbox Code Playgroud)

然后检查你是否有一个不错的回复(状态代码是200或3**):

curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].."
Run Code Online (Sandbox Code Playgroud)

如果状态代码正常,这将输出第一行,如果不是,则输出任何内容.您也可以将其传递给/ 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
Run Code Online (Sandbox Code Playgroud)

编辑 -s只是告诉curl不显示"进度条".

  • 要使用较少的字符串解析来执行此操作,并检查重定向到不存在的页面,请使用此curl --silent --head --location --output/dev/null --write-out'%{http_code}'http ://en.wikipedia.org/wiki/tla | grep'^ 2'` (4认同)
  • 根据我的经验,我知道添加`--connect-timeout <seconds>`选项是值得的. (3认同)

Sit*_*hsu 24

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

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


JDG*_*ide 13

首先确保没有授权问题.如果需要任何授权,则提供用户名和密码.创建一个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
Run Code Online (Sandbox Code Playgroud)

它在Nexus和其他Repository中为我工作.