Как определить, существует ли веб-страница с использованием сценариев оболочки? - PullRequest
53 голосов
/ 27 мая 2010

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

Ответы [ 5 ]

103 голосов
/ 27 мая 2010

В * 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 не показывать «индикатор выполнения».

22 голосов
/ 16 августа 2013

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

status=$(curl -s --head -w %{http_code} http://www.google.com/ -o /dev/null)
echo $status
12 голосов
/ 08 января 2014

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

2 голосов
/ 14 июня 2015

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

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

0 голосов
/ 28 мая 2010

wget или cURL выполнят эту работу. Смотрите здесь wget или cURL для получения подробной информации и мест для скачивания. Укажите URL-адрес этих инструментов командной строки и проверьте ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...