2011-07-27 17 views
5

Necesito establecer un tiempo de inactividad de programación para el host de nagios específico de la línea de comandos por curl ... ¿cómo hago eso?¿Cómo establecer el tiempo de inactividad para cualquier host de nagios específico para cierto tiempo desde la línea de comandos hasta el curl?

aquí es algo que ya estoy usando para activar/desactivar la notificación de servicio/host desde la línea de comandos.

curl -d "some input here" url "user:pass" 

manera que tengo que hacer lo que es para el horario downtime.Now el problema es que la opción de tiempo de inactividad, es decir, tiene más opciones starttime, tiempo final, comentar, etc.

Entonces, ¿cómo lograr que se haga por rizo desde la línea de comando?

curl -d " some key value pair(hostname,servicename" url "username:passowrd" 

que activará y desactivará la notificación de servicio/host desde la línea de comandos. Así que quiero usar curl de esta manera para proporcionar tiempo de inactividad para el servidor nagios específico.

La secuencia de comandos anterior no funciona, porque la opción de tiempo de inactividad de nagios tomó más parámetros e intenté infundirlos en la secuencia de comandos ... pero no funcionó de esa manera. Necesitamos también proporcionar el tiempo de inicio, el tiempo de finalización y el valor de comentario .

Más He intentado con la opción de curl llamada --form y --form-string con esa secuencia de comandos ... no se puede pasar.

La idea básica es que en lugar de ir a la interfaz web de Nagios, queremos hacer esto desde la línea de comandos (hemos tenido éxito para el servicio/servicio de host y notificación).

Espero que esté absolutamente claro ahora.

TIA

Bhaskar

Respuesta

2

Puede enviar varios valores de campo de formulario con curl simplemente añadiendo más --data(-d) argumentos. Esto se debe programar el tiempo de inactividad servicio en un sistema Nagios:

curl \ 
    --data cmd_typ=56 \ 
    --data cmd_mod=2 \ 
    --data host=$HOSTNAME \ 
    --data-urlencode "service=${SERVICENAME}" \ 
    --data-urlencode "com_data=${COMMENT}" \ 
    --data trigger=0 \ 
    --data-urlencode "start_time=2011-07-31 00:00:00" \ 
    --data-urlencode "end_time=2011-07-31 01:00:00" \ 
    --data fixed=1 \ 
    --data hours=2 \ 
    --data minutes=0 \ 
    --data btnSubmit=Commit \ 
    $NAGIOS-URL "username:password" 
+0

Gracias Anders ... déjame probar eso y dejarte saber sobre el resultado. – user212064

+0

Andres. ¿Dónde encontraste la opción data-urlencode? No lo he encontrado en el manual de curl ... – user212064

+0

http://curl.haxx.se/docs/manpage.html#--data-urlencode –

6

I aumentaron Anders respuesta a proporcionar un guión completo y no requiere el uso de un rizo nueva compatible con --Hojas-urlencode. Esto también calcula automáticamente la hora de finalización para enviar y comprueba que la solicitud se envió correctamente a Nagios. Además, esto programa el tiempo de inactividad para el host y todos los servicios en el host.

#!/bin/bash 

function die { 
    echo $1; 
    exit 1; 
} 

echo Scheduling downtime on nagios 

HOST=monitoredhost 
NAGURL=https://nagios.example.com/cgi-bin/nagios3/cmd.cgi 
USER=nagiosuser 
PASS=nagiospassword 
MINUTES=10 

export MINUTES 

# The following is urlencoded already 
STARTDATE=`date "+%Y-%m-%d+%H%%3A%M%%3A%S"` 
# This gives us the date/time X minutes from now 
ENDDATE=`date "+%Y-%m-%d+%H%%3A%M%%3A%S" -d "$MINUTES min"` 
curl --silent --show-error \ 
    --data cmd_typ=86 \ 
    --data cmd_mod=2 \ 
    --data host=$HOST \ 
    --data "com_data=Updating+application" \ 
    --data trigger=0 \ 
    --data "start_time=$STARTDATE" \ 
    --data "end_time=$ENDDATE" \ 
    --data fixed=1 \ 
    --data hours=2 \ 
    --data minutes=0 \ 
    --data btnSubmit=Commit \ 
    --insecure \ 
    $NAGURL -u "$USER:$PASS" | grep -q "Your command request was successfully submitted to Nagios for processing." || die "Failed to contact nagios"; 

echo Scheduled downtime on nagios 
+0

anonymous, gracias por la sugerencia que nos permite eliminar la dependencia de Perl. –

+0

Funciona con icinga. Solo asegúrese de cambiar la cadena de verificación grep y, por supuesto, la URL. –

0

Para que esto funcione en mi Nagios, he tenido que añadir una línea adicional en "anfitrión de datos = $ HOST"

--Hojas "com_author = automático + tiempo de inactividad" \

Sin eso, mi Nagios no aceptaría el tiempo de inactividad.

1

Mejoré la respuesta de Sarels.

  • lo hizo funcionar con nuestro Nagios 3.5.1 (modificó cmd_typ, agregó childoptions, cambió el formato de fecha).
  • hizo HOST y USER un arg línea de comandos
  • usando $ USER (usuario actual) como predeterminado
  • solicitud de contraseña añadido (sin contraseña codificada)
  • añade autor de mensaje nagios

Mi versión :

#!/bin/bash 

# Bash script to schedule downtime for Host 
# source: http://stackoverflow.com/a/9198181 
# Author: Sarel Botha http://stackoverflow.com/users/35264/ 

function die { 
    echo $1; 
    exit 1; 
} 

if [ $# -lt 1 ]; then 
    echo "$0 <host> [<user>]" 
    exit 0; 
elif [ $# -ge 2 ]; then 
    USER=$2 
fi 

HOST=$1 
NAGURL=https://nagios.example.com/nagios3/cgi-bin/cmd.cgi 
MINUTES=30 

echo Scheduling downtime on nagios for $HOST 

export MINUTES 

# read password 
read -s -p "Password for $USER:" PASS 
echo "" # newline after prompt 

# The following is urlencoded already 
STARTDATE=`date "+%d-%m-%Y+%H%%3A%M%%3A%S"` 
# This gives us the date/time X minutes from now 
ENDDATE=`date "+%d-%m-%Y+%H%%3A%M%%3A%S" -d "$MINUTES min"` 
curl --silent --show-error \ 
    --data cmd_typ=55 \ 
    --data cmd_mod=2 \ 
    --data host=$HOST \ 
    --data "com_author=$USER" \ 
    --data "com_data=reboot+due+to+security+updates" \ 
    --data trigger=0 \ 
    --data "start_time=$STARTDATE" \ 
    --data "end_time=$ENDDATE" \ 
    --data fixed=1 \ 
    --data hours=2 \ 
    --data minutes=0 \ 
    --data childoptions=0 \ 
    --data btnSubmit=Commit \ 
    --insecure \ 
    $NAGURL -u "$USER:$PASS" | grep -q "Your command request was successfully submitted to Nagios for processing." || die "Failed to contact nagios"; 

echo Scheduled downtime on nagios 
Cuestiones relacionadas