Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Kithai en 16 Noviembre 2016, 10:44 am



Título: AYUDA con Script para un plugin de perl!
Publicado por: Kithai en 16 Noviembre 2016, 10:44 am
Saludos!!

Estoy tratando de realizar un script en la empresa donde estoy de practicas, y mi talon de aquiles es la programacion  :-X :-X
Se trata de un script que lance un plugin en perl para Nagios, y dependiendo del texto resultante de la ejecucion de ese plugin, dar un valor de salida "exit 0" o "exit 2" acompañado de un texto a poder ser
Especifico, si en el texto resultante de la ejecucion del PLUGIN existe la palabra CRITICAL solo 1 vez, el script deberia dar "exit 0" y un texto en plan "Tranquilos, todo va bien".
En cambio, si en dicho texto existe la palabra CRITICAL mas de una vez, acabar con "exit 2" mas texto acompañante de alerta

Para aclarar, el valor 0 le dice a nagios que el servicio chequeado esta OK, el 2 le dice que pinte CRITICAL

La putada es que no puedo probar la ejecucion del script "al vuelo" indefinidamente, pues la maquina esta en proceso supervisando servicios criticos de produccion, por lo tanto necesito minimizar los intentos fallidos al minimo

Se que para contabilizar el las palabras puedo usar grep CRITICAL -c
Pero poco mas....

Voy modificando este script que usan ellos que hace algo parecido, pero no lo entiendo del todo:

#!/bin/bash

Código
  1. PROG=/usr/local/nagios/libexec/check_mssql_health
  2. HOST=$1
  3. FILE=/tmp/check_mssqlhealth$1.txt
  4. OK=$2
  5.  
  6. $PROG $HOST > $FILE
  7.  
  8. grep CRITICAL -c $OK $FILE
  9. if [ $? -eq 1 ] ; then
  10.  echo "OK!"
  11.  exit 0
  12. else
  13.  echo "ERROR!"
  14.  exit 2
  15. fi
  16.  
Cualquier ayuda sera muy agradecida!!

Muchas gracias de antemano!



Título: Re: AYUDA con Script para un plugin de perl!
Publicado por: Ocelot1994 en 21 Noviembre 2016, 16:58 pm
Saludos!!

Estoy tratando de realizar un script en la empresa donde estoy de practicas, y mi talon de aquiles es la programacion  :-X :-X
Se trata de un script que lance un plugin en perl para Nagios, y dependiendo del texto resultante de la ejecucion de ese plugin, dar un valor de salida "exit 0" o "exit 2" acompañado de un texto a poder ser
Especifico, si en el texto resultante de la ejecucion del PLUGIN existe la palabra CRITICAL solo 1 vez, el script deberia dar "exit 0" y un texto en plan "Tranquilos, todo va bien".
En cambio, si en dicho texto existe la palabra CRITICAL mas de una vez, acabar con "exit 2" mas texto acompañante de alerta

Para aclarar, el valor 0 le dice a nagios que el servicio chequeado esta OK, el 2 le dice que pinte CRITICAL

La putada es que no puedo probar la ejecucion del script "al vuelo" indefinidamente, pues la maquina esta en proceso supervisando servicios criticos de produccion, por lo tanto necesito minimizar los intentos fallidos al minimo

Se que para contabilizar el las palabras puedo usar grep CRITICAL -c
Pero poco mas....

Voy modificando este script que usan ellos que hace algo parecido, pero no lo entiendo del todo:

#!/bin/bash

Código
  1. PROG=/usr/local/nagios/libexec/check_mssql_health
  2. HOST=$1
  3. FILE=/tmp/check_mssqlhealth$1.txt
  4. OK=$2
  5.  
  6. $PROG $HOST > $FILE
  7.  
  8. grep CRITICAL -c $OK $FILE
  9. if [ $? -eq 1 ] ; then
  10.  echo "OK!"
  11.  exit 0
  12. else
  13.  echo "ERROR!"
  14.  exit 2
  15. fi
  16.  
Cualquier ayuda sera muy agradecida!!

Muchas gracias de antemano!


Para probar podrias añadir un string en el que metas la palabra CRITICAL y ver si esta en ese string a ver si te funciona bien
Código
  1. PROG=/usr/local/nagios/libexec/check_mssql_health
  2. my @prueba =("Hola esto es una prueba CRITICAL");
  3. for my $c(0 ..scalar(@prueba)-1){
  4. ....
  5. }
  6.