Как получить ответ с любого URL?

23

Меня попросили написать скрипт оболочки. Чтобы проверить, является ли URL UP / Working или нет для моего Проекта.

Я пытался найти некоторые подсказки через Интернет, но все, что я получил, это о проверке, существует ли URL или нет.

Я впервые попробовал с wget.

wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^  /'
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

Моя следующая попытка была с curl.

curl -ivs  https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html#
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

Но оба проверяют наличие URL, а не ответа.

Акаша
источник
1
Просто бросил быстрый взгляд на curl man и, кажется, предлагает, если вы используете флаг --fail, он вернет код выхода 22, а не вернет страницу с сообщением о проблеме, поэтому только '200 OK' даст возвращаемое значение из 0.
Парень

Ответы:

20

curl -Is http://www.yourURL.com | head -1Вы можете попробовать эту команду, чтобы проверить любой URL-адрес. Код состояния 200 OKозначает, что запрос выполнен успешно и URL-адрес доступен.

Вы также можете проверить доступность URL и получить код ответа, используя telnetкоманду

telnet www.yourURL.com 80

80 это номер порта.

Thushi
источник
Спасибо, что поделился. Это тоже пробовал, но я думаю, что это также проверяет только существование. $ sh q.sh URL для проверки: google.com/akash google.com/akash существует, но в браузере :: 404 выдает ошибку. Это ошибка.
Акаш
@Akash: Вы можете получить доступ к этой ссылке через браузер?
Thushi
если это ссылка, о которой вы говорите - http://www.google.com/akash-- тогда НЕТ - мне сообщают об ошибке :: «404-not found»
Akash
Да, если этот URL не существует, то он должен :) Что еще вы ожидаете ???
Thushi
Но - это дает мне - что это существует .. Ниже приведен код :: $ vi q.sh #! / Bin / ksh echo "дай свой URL" прочитайте url curl -ls "& url" | голова -1 если [$? -eq 0] затем echo «Exist», иначе echo «Not Exist» fi Когда я запускаю это: $ sh q.sh, введите ваш URL-адрес www.google.com/akash Exist, но он должен перейти в ELSE ..
Akash
5

Вы можете сделать следующее

#!/bin/bash

read -p "URL to check: " url
if curl --output /dev/null --silent --head --fail "$url"; then
  printf '%s\n' "$url exist"
else
  printf '%s\n' "$url does not exist"
fi

Эти ifзаявления не нужно , хотя, я их здесь просто чтобы проиллюстрировать поток сценария.введите описание изображения здесь

Валентин Байрами
источник
Я попробовал это, и это не дает мне ожидаемых результатов.
Акаш
$ sh q.sh URL для проверки: www.google.com% s \ n www.google.com не существует
Akash
@Akash Смотрите обновленный ответ. Не помещайте расширение в ваш скрипт. И запустите это просто ./checkURL. Надеюсь, это поможет
Валентин Байрами
Это нужно для целей проекта .. думаю, у вас нет доступа, чтобы запустить его так: :(
Akash
Что %s\n ты там положил? на ваш комментарий? Проект назначение? Вы должны быть более конкретными в том, что вы пытаетесь достичь.
Валентин Байрами
1

Следующая вещь работала для меня ....

status="$(curl -Is http://www.google.com | head -1)"
validate=( $status )
if [ ${validate[-2]} == "200" ]; then
  echo "OK"
else
  echo "NOT RESPONDING"
fi

Я пытался из того, что написал @THUSHI.

Абхишек Тивари
источник
0

Если вы pingURL, это также даст вам ответ

ping -c 5 www.google.com

Где -cбудет рассчитывать до истечения времени ожидания 5.

В свете того, что мне посоветовали, nmapможет сработать, если у вас установлен пакет в вашей системе. curlбыло бы лучшим вариантом, но, тем не менее, вот пример использования nmap:

nmap -p 80 -sT www.google.com

ryekayo
источник
pingотправляет ICMPсообщение и определенно не использует порт 80или 443. Также некоторые серверы блокируют запросы ping, что делает попытку ненадежной.
Валентин Байрами
Вы также можете пинговать порты. Я
приведу пример проверки связи
nmap -p 80 -s www.google.com отправит эхо-запрос на порт 80. Я вскоре отредактирую свой ответ, когда получу доступ к своему ПК
ryekayo
1
nmapво многих системах * nix снова не является пакетом по умолчанию. curlчаще всего поставляется с базовой системой. Вам все еще нужно установить, nmapчтобы достичь чего-то, что может быть достигнуто стандартными инструментами * nix.
Валентин Байрами
1
Понял, спасибо за информацию. Я обновил свой ответ
ryekayo
0

В большинстве случаев curl не работает на https, если вы хотите проверить, вы можете проверить через «curl --version», вы не увидите опцию https, в этом случае вы можете использовать ниже

wget --post-data '{"name":"Radha", "Car": "Jaquar"}' --header "Content-Type: application/json" --no-check-certificate https://yourrequiredURI

Яниш Прадхананга
источник
-2
status="curl \"${server}:${port}\""  >/tmp/tmp.txt
host_check='grep "<html" /tmp/tmp.txt'
Гянеш Гупта
источник