Skrypt Linuksa z curlem do sprawdzenia, czy webservice działa

Mam webservice pod adresem http://localhost/test/testweb

Chcę napisać skrypt, aby sprawdzić, czy webservice działa z curl

Jeśli podano parametr curl, zwraca 200 OK ok true false, więc mogę go użyć jako bloku if-else w skrypcie Linuksa

 40
Author: Burhan Khalid, 2012-10-05

6 answers

curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null
  • -s = Silent cURL ' s output
  • -L = Follow redirects
  • -w = własny format wyjściowy
  • -o = przekierowuje wyjście HTML do /dev/null

Przykład:

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

Prawdopodobnie usunąłbym \\n, gdybym przechwycił wyjście.

 72
Author: Burhan Khalid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-05 14:07:53

To samo co @ burhan-khalid, ale dodano --connect-timeout 3 i --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
 5
Author: Mohamed EL HABIB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-03 01:42:56

Używam:

curl -f -s -I "http://example.com" &>/dev/null && echo OK || echo FAIL

- f --fail Fail bezszelestnie (brak wyjścia) przy błędach HTTP
-s --silent Silent mode
-I --head Pokaż tylko informacje o dokumencie

Uwaga:
w zależności od potrzeb Możesz również usunąć "- I", ponieważ w niektórych przypadkach musisz wykonać GET, a nie HEAD

 5
Author: Zibri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-12 12:39:38

Który sprawdzi nagłówki poprzez wget 2>&1 wyprowadza stderr na stdout grep filtry -O /dev/null po prostu wyrzuca zawartość strony

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

Wiem, że nie curl, ale wciąż rozwiązanie

 0
Author: Thomas Nordquist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-05 16:36:07

Potrzebowałem lepszej odpowiedzi na to, więc napisałem skrypt poniżej.

FakePhrase jest używany do wykrywania ISP" Search Assist " adware http resposnes.

#!/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
 0
Author: Michael Cole,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-18 18:02:43

Użyj tego:

curl -o $CURL_OUTPUT -s -w %{http_code}\\n%{time_total}\\n $URL > $TMP_FILE 2>&1
cat $TMP_FILE
 0
Author: sudhir kumar mishra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-10 15:08:32