验证 URL 是否存在

验证 URL 是否存在

我想在不下载的情况下验证 URL 是否存在。我在下面使用curl

if [[ $(curl ftp://ftp.somewhere.com/bigfile.gz) ]] 2>/dev/null;
 then
  echo "This page exists."
 else
  echo "This page does not exist."
fi

或使用wget

if [[ $(wget ftp://ftp.somewhere.com/bigfile.gz) -O-]] 2>/dev/null;
 then
  echo "This page exists."
 else
  echo "This page does not exist."
fi

如果 URL 不存在,这非常有效。如果存在,则会下载该文件。就我而言,文件非常大,我不想下载它。我只是想知道该网址是否存在。

答案1

你很接近了。解决这个问题的正确方法是使用方法。

使用卷曲:

if curl --head --silent --fail ftp://ftp.somewhere.com/bigfile.gz 2> /dev/null;
 then
  echo "This page exists."
 else
  echo "This page does not exist."
fi

或使用 wget:

if wget -q --method=HEAD ftp://ftp.somewhere.com/bigfile.gz;
 then
  echo "This page exists."
 else
  echo "This page does not exist."
fi

答案2

我认为,最好将--spider论证与wget工具一起使用。它也适用于该wget工具的轻量级版本(在 BusyBox 中)。

例子:

URL="http://www.google.com"

if wget --spider "${URL}" 2>/dev/null; then
    echo "OK !"
else
    echo "ERROR ! Online URL ${URL} not found !"
fi

答案3

尝试curl --head (HTTP FTP FILE) 仅获取标头!

status=$(curl --head --silent ftp://ftp.somewhere.com/bigfile.gz | head -n 1)

if echo "$status" | grep -q 404
  echo "file does not exist"
else
  echo "file exists"
fi

答案4

echo $(curl --head --silent <url> | head -n 1)

相关内容