Verifique se existe um URL

0

Gostaria de verificar se existe um URL sem fazer o download. Estou usando abaixo com 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

ou usando 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

Isso funciona muito bem se o URL não existir. Se existir, faz o download do arquivo. No meu caso, os arquivos são muito grandes e eu não quero baixar. Eu só quero saber se essa URL existe.

    
por rmf 11.10.2018 / 13:38

3 respostas

0

Você está perto. A maneira correta de abordar isso é usar o método HEAD .

com cURL:

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

ou usando 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
    
por 12.10.2018 / 14:58
2
if curl --output /dev/null --silent --head --fail "ftp://ftp.somewhere.com/bigfile.gz"
then
  echo "This page exists."
 else
  echo "This page does not exist."
fi
    
por 11.10.2018 / 14:07
2

Tente curl --head (HTTP FTP FILE) Busque apenas os cabeçalhos!

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
    
por 11.10.2018 / 14:10