Я пытаюсь создать программу, которая может конвертировать серию сканирований в один файл PDF, и я не хочу пытаться загрузить изображение, чтобы определить, есть ли у меня правильный URL-адрес. Есть ли команда сценариев оболочки, которую я могу использовать, чтобы просто проверить, существует ли веб-страница?
Как определить, существует ли веб-страница с помощью сценариев оболочки?
Ответ 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-адрес этих инструментов командной строки и проверьте ответ.