Як отримати відповідь з будь-якої URL-адреси?


23

Мене попросили написати сценарій оболонки, щоб перевірити, чи URL-адреса вгору / працює чи ні для мого проекту.

Я намагався знайти деякі підказки через Інтернет, але все, що у мене є, це перевірити, чи існує 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
Щойно переглянув чоловіка з завиткою, і, здається, ви можете запропонувати, якщо ви використовуєте --fail flag, він поверне код виходу 22, а не поверне сторінку із повідомленням про проблему, тож лише "200 ОК" дасть повернене значення з 0.
Хлопець

Відповіді:


20

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

Ви також можете перевірити наявність URL-адреси та отримати код відповіді за допомогою telnetкоманди

telnet www.yourURL.com 80

80 - номер порту.


Дякую, що поділились. Я також спробував це, але я думаю, що це теж перевірка існування. $ sh q.sh URL-адреса для перевірки: google.com/akash google.com/akash існує, але це дає помилку в браузері :: 404. Це помилка.
Акаш

@Akash: Чи можете ви отримати доступ до цього посилання через веб-переглядач?
Сухі

якщо це посилання ур говорити--www.google.com/akash--then НЕ - це мені помилка :: "404-не знайдено"
Акаш

Так, якщо цієї URL-адреси немає, то вона повинна :) Що ще ви очікуєте ???
Сухі

Але - це дає мені - що воно існує .. Нижче наведено код :: $ vi q.sh #! / Bin / ksh echo "дай URL-адресу" прочитати curl-curl -ls "& url" | голова -1, якщо [$? -eq 0], тоді відлуння "Існує", ще відлуння "Не існує" fi Коли я запускаю це: $ sh q.sh дайте URL-адресу www.google.com/akash Існує, але він повинен перейти до 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 Дивіться оновлену відповідь. Не ставте розширення до свого сценарію. Також запустіть його просто мимо ./checkURL. Сподіваюся, що це допомагає
Валентин Байрамі

Це потрібно для цілей проекту. Подумайте, не майте доступу для його запуску так: :(
Акаш

Що %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


pingнадсилає ICMPповідомлення і напевно не використовує порт 80або 443. Також деякі сервери блокують запити ping, що все ще робить спробу недостовірною.
Валентин Байрамі

Ви також можете пінг-порти. Я
надішлю приклад pinging

nmap -p 80 -sT 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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.