Подтвердить что ты не робот

Linux script с завитком для проверки webservice

У меня есть веб-сервис, предоставляемый при http://localhost/test/testweb

Я хочу написать script, чтобы проверить, работает ли webservice с curl

Если имеется параметр curl, возвращает 200 OK ok true false, поэтому я могу использовать его if-else block в linux script

4b9b3361

Ответ 1

curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null
  • -s= Выход без звука cURL
  • -L= следовать переадресации
  • -w= Пользовательский формат вывода
  • -o= перенаправляет вывод HTML на /dev/null

Пример:

[~]$ curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null
200

Я бы, вероятно, удалил \\n, если бы я должен был захватить вывод.

Ответ 2

То же, что и @burhan-khalid добавил:

--connect-timeout 3

--max-time 5

test_command='curl -sL \ -w "%{http_code}\\n" \ "http://www.google.com:8080/" \ -o /dev/null \ --connect-timeout 3 \ --max-time 5' if [ $(test_command) == "200" ] ; then echo "OK" ; else echo "KO" ; fi

Ответ 3

Это будет проверять заголовки через wget 2>&1, а stderr - на stdout Фильтры grep -O /dev/null просто проливает содержимое страницы

if [ "\`wget http://example.org/ -O /dev/null -S --quiet 2>&1 | grep '200 OK'\`" != "" ]; 
then 
   echo Hello; 
fi;

Я знаю, что не завитка, но все же решение

Ответ 4

Мне нужен был лучший ответ на этот вопрос, поэтому я написал script ниже.

FakePhrase используется для обнаружения рекламных HTTP-запросов рекламного ПО "Search Assist".

#!/bin/bash

fakePhrase="verizon"
siteList=(
  'http://google.com'
  'https://google.com'
  'http://wikipedia.org'
  'https://wikipedia.org'
  'http://cantgettherefromhere'
  'http://searchassist.verizon.com'
)

exitStatus=0

function isUp {
  http=`curl -sL -w "%{http_code}" "$1" -o temp_isUp`
  fakeResponse=`cat temp_isUp | grep $fakePhrase`
  if [ -n "$fakeResponse" ]; then
    http=$fakePhrase
  fi
  case $http in
  [2]*)
    ;;
  [3]*)
    echo 'Redirect'
    ;;
  [4]*)
    exitStatus=4
    echo "$1 is DENIED with ${http}"
    ;;
  [5]*)
    exitStatus=5
    echo "$1 is ERROR with ${http}"
    ;;
  *)
    exitStatus=6
    echo "$1 is NO RESPONSE with ${http}"
    ;;
  esac
}

for var in "${siteList[@]}"
do
  isUp $var
done

if [ "$exitStatus" -eq "0" ]; then
  echo 'All up'
fi

rm temp_isUp
exit $exitStatus

Ответ 5

Используйте это:

curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1
cat $TMP_FILE