2012-10-05 9 views
22

he un servicio web proporcionado en http://localhost/test/testwebscript de Linux con rizo para comprobar servicio web es de hasta

Quiero escribir una secuencia de comandos para comprobar si servicio web es con rizo

Si en ella se ofrece un parámetro rizo, devuelve 200 OK bien verdadero falso para que pueda usarlo es if-else bloque de secuencia de comandos Linux

+0

Por favor, no alteran la cuestión y añadir la respuesta, desde el aceptada las personas responderán sabrán qué solución funcionó. –

+0

No entiendo por qué me advirtió que no edite la pregunta. Hasta donde sé, aún no lo he editado. –

+0

Agregaste tu solución a la pregunta; Invertí tu actualización. –

Respuesta

44
curl -sL -w "%{http_code}\\n" "http://www.google.com/" -o /dev/null 
  • -s = salida de Silent cURL
  • -L = Sigue redirige
  • -w = salida personalizada formato
  • -o = redirige la salida HTML a /dev/null

Ejemplo:

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

probablemente eliminaría la \\n si tuviera que captura la salida.

+3

** + 1 **: excelente uso de la lista exhaustiva de opciones de línea de comandos de curl. Una adición podría ser '-I' para que se use un método HEAD en lugar de GET. Esto todavía verifica que la página se puede generar, pero le ahorra un poco de ancho de banda al eliminar el cuerpo de la salida HTML. (Todavía desea '-o/dev/null' para evitar escupir el resto de los encabezados.) – ghoti

+0

También debe tenerse en cuenta: la' \\ n' (barra invertida escapada) solo es necesaria si está utilizando bash como su shell interactivamente, pero si pones esto en una secuencia de comandos O utilizas tcsh debes usar '\ n' en su lugar.Este es un problema de cotización; la línea de comandos funciona igual en ambos shells, de forma interactiva y en scripts si usa comillas simples en su lugar, à la: ''% {http_code} \ n'' Probablemente sea mejor usar consistencia en su lugar. – ghoti

+0

es genial. He combinado tu respuesta con mi script que se usa para ejecutar un servicio de Java y esperar hasta que se active. He actualizado mi pregunta. Gracias. –

0

que comprobará las cabeceras a través de wget 2>&1 tuberías del stderr a stdout grep filtros -O /dev/null simplemente arroja el contenido de la página

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

yo no sé rizo, pero sigue siendo una solución

0

I necesitaba una mejor respuesta para esto, así que escribí el guión a continuación.

La fakePhrase se utiliza para detectar las resposnes HTTP del adware "Search Assist" del ISP.

#!/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 
+2

... o simplemente puede cambiar a Google DNS o OpenDNS y no tener que lidiar con esto. –

0

Utilice esta:

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

podemos grep condición requerida de TMP_FILE –

1

Igual @ Burhan-Khalid añadido:

--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

Cuestiones relacionadas