Как определить, существует ли веб-страница с помощью сценариев оболочки? - программирование
Подтвердить что ты не робот

Как определить, существует ли веб-страница с помощью сценариев оболочки?

Я пытаюсь создать программу, которая может конвертировать серию сканирований в один файл PDF, и я не хочу пытаться загрузить изображение, чтобы определить, есть ли у меня правильный URL-адрес. Есть ли команда сценариев оболочки, которую я могу использовать, чтобы просто проверить, существует ли веб-страница?

4b9b3361

Ответ 1

В * 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

EDIT -s просто сообщает curl не показывать "индикатор выполнения".

Ответ 2

Используйте cURL для получения кода состояния и проверки требуемых значений.

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

Ответ 3

Сначала убедитесь, что проблема авторизации отсутствует. Если требуется авторизация, вы указываете имя пользователя и пароль. Создайте файл оболочки script (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 и другом репозитории.

Ответ 4

Вы всегда можете просто использовать 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 - это просто отправить вывод (если есть) в корзину.

Я знаю, что это просрочено, но я надеюсь, что это поможет.

Ответ 5

wget или cURL выполнит эту работу. См. Здесь wget или cURL для детали и места загрузки. Поставьте URL-адрес этих инструментов командной строки и проверьте ответ.