Tengo la sensación de que me falta lo obvio, pero no lo he logrado con man [curl|wget]
o google ("http" hace un término de búsqueda tan malo). Estoy buscando una solución sucia & rápida a uno de nuestros servidores web que falla con frecuencia, devolviendo el código de estado 500 con un mensaje de error. Una vez que esto sucede, debe reiniciarse.¿Cómo evaluar los códigos de respuesta http del script bash/shell?
Como la causa principal parece ser difícil de encontrar, estamos buscando una solución rápida, con la esperanza de que sea suficiente para cerrar el tiempo hasta que podamos arreglarlo (el servicio no necesita alta disponibilidad)
La solución propuesta es crear un trabajo cron que se ejecute cada 5 minutos, verificando http://localhost:8080/. Si esto vuelve con el código de estado 500, el servidor web se reiniciará. El servidor se reiniciará en menos de un minuto, por lo que no es necesario verificar si los reinicios ya se están ejecutando.
El servidor en cuestión es una instalación mínima de ubuntu 8.04 con suficientes paquetes instalados para ejecutar lo que necesita actualmente. No es un requisito difícil realizar la tarea en bash, pero me gustaría que se ejecutara en un entorno tan mínimo sin instalar más intérpretes.
(estoy lo suficientemente familiarizado con secuencias de comandos que el comando/opciones para asignar el código de estado HTTP para una variable de entorno sería suficiente - esto es lo que he buscado y no podía encontrar.)
Agradable, gracias: ya he encontrado -write-out, pero he perdido el --output/dev/null. Cuando todo el contenido viene con él, el código de respuesta se pierde en demasiada información, así que simplemente no lo vi ... –
¿Puedo almacenar tanto el código de respuesta como el resultado en variables separadas? Me gustaría hacer eco de la salida cuando el código de respuesta no es 200 –
@VaibhavBajpai: Pruebe esto: 'response = $ (curl --write-out \\ n% {http_code} --silent --output - servername)' - la última línea en el resultado será el código de respuesta. –