Newsgroup: it.comp.os.linux.sys
Titolo: Plugin di traceroute per Nagios

Qualcuno può aiutarmi a capire perchè questo script lanciato a mano dà il risultato corretto ma lanciato da nagios no! 
 
#! /bin/bash
PROG="/usr/bin/traceroute -n"
HOST=$1
FILE=/tmp/check_tracert-`date +%N`.txt
START=$2
LAST=$3
 
if [ $# -lt 2 ]
  then
    echo "Usage: check_tracert [host] [ip we should route via] [last hop]"
  exit 2
fi
 
$PROG $HOST > $FILE
 
 
RESULT=`egrep -c "($START|$LAST)" $FILE`
 
case "$RESULT" in
  0) echo "CRITICAL! Routing not matching!!!"
     rm -f $FILE
     exit 2
  ;;
 
  1) echo "WARNING! Last hop route not found!"                
     rm -f $FILE
     exit 1
  ;;
 
  2) echo "OK! Currently routing via $LAST" 
     rm -f $FILE
     exit 0
  ;;
 
  *) echo "UNKNOWN!"
     echo $RESULT > /tmp/result
     exit 3
esac
 
 
 
Se viene eseguito da Nagios non esegue il grep ed il risultato della variabile $RESULT è 6 (ossia il contenuto dell'intero file con il traceroute).
 
Dove stò sbagliando?!
Grazie

 Dove st� sbagliando?!
 
Magari egrep non e' nel Path di ricerca e lo script, lanciato da Nagios,
non lo trova?
 
Prova a mettere il Path completo!
 
Ciao
Luca Bertoncello
(
luca...@lucabert.de
)
 
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 traceroute).
 
Se la variabile RESULT ï¿œ 6 vuol dire che l'egrep lo esegue altrimenti 
avresti una riga del tipo command not found.
Poichï¿œ gli passi due ip che contengono il carattere '.' e che tale 
carattere nelle espressioni regolari significa qualsiasi carattere 
direi che il problema sta nell'espressione regolare.
Prova con
egrep -c "(${START}!${LAST}" $FILE
Ciao
 
-- 
************** (.)_(.) *******************
Un amico ï¿œ uno che sa tutto di te e,
nonostante questo, gli piaci
(E. Hobbard)
http://www.youtube.com/user/Nameci65
 
 
 

 Ciao
 
Inoltre in Nagios metti i parametri tra doppio apice


 Inoltre in Nagios metti i parametri tra doppio apice
 
Questo l'avevo già fatto perchè ci sono alcune rotte per cui l'ip potrebbe essere confuso da grep, tipo 10.0.10.2 e 10.0.10.20 perciò ho messo l'ip tra virgolette e con un carattere di spazio protetto dall'escape per fargli vedere la differenza. Visto l'errore ho provato con altri parametri per scongiurare che non fosse quello ma alla fine l'ho lasciato comunque racchiuso tra apici doppi.
 
Grazie
Rizio

 e questo funziona. Non capisco dove possa essere l'errore.
 
Ethan ha messo, nella variabile $GREP, il PATH COMPLETO a egrep.
Hai provato, come avevo suggerito qualche giorno fa, a fare lo stesso
anche tu?
Sai le volte che mi e' successo di avere errori strani perche' un certo
file non era nel Path per l'utente che lo lanciava (e, magari, ne trovava
un altro)?
 
Prova a mettere il Path di egrep (da me /bin/egrep) nel tuo script.
 
Male che vada, hai perso mezzo minuto, ma almeno hai escluso quella
possibilita'.
 
ciao


 Prova a mettere il Path di egrep (da me /bin/egrep) nel tuo script.
 
Si, hai ragione, provo poi vi dico.
 
Rizio

>> egrep -c "(${START}!${LAST}" $FILE
 
ma quanti errori sono riuscito a fare in una sola riga? :(
 
Scusa. Ho messo il ! invece dell |
Ho omesso l'ultima parentesi tonda
 
Se passi una variabile con lo spazio in fondo è meglio se metti il 
doppio apice anche nello script
START="$2"
LAST="$3"
 
Se ancora non dovesse andare (ma dubito) metti dei semplici echo delle 
tue variabili sul file di output per vedere cosa vede lo script.
Ciao
 
-- 
************** (.)_(.) *******************
Un amico è uno che sa tutto di te e,


 tue variabili sul file di output per vedere cosa vede lo script.
 
Provo a fare così perchè purtroppo anche come suggerisce Luca non funziona. 
Proverò anche proteggendo le variabili con i doppi apici ma poi ho pensato di usare la strada lunga, ossia un grep solo alla volta valorizzando una variabile. E' fastidioso non capire perchè non va ma almeno finisco 'sta cosa che per uno script banale stò perdendo un sacco di tempo (a maggior ragione sapendo che lo script funziona ma è nagios che non riesce ad eseguirlo!!)
 
Intanto grazie.
Rizio

Ho capito cosa c'era che non andava e perchè il risultato era così strano (mi dava 6 come risultato del grep). 
Avrei dovuto arrivarci prima perchè pensandoci era banale ma mi ero incaponito sullo script e non sul contorno, mea culpa.
 
Avevo commesso l'errore di copiare la riga di esecuzione del comando di nagios (file command.cfg) da un servizio che usava solo UN paramtero perciò passava allo script SOLO il primo parametro!!! Come secondo parametro lo script (probabilmente) prendeva uno spazio o comunque un carattere che trovava presente in ogni riga parsata dal grep perciò mi dava come risultato il totale delle righe che riceveva in output dal traceroute!!!
 
Sono un coglione scusate, l'ho scoperto eseguendo l'echo degli switch che nagios passava in ingresso allo script.
 
Perdonate la perdita di tempo, alla fine comunque l'ho messo a posto proteggendo anche con gli apici doppi le variabili e inserendo il path completo nel grep, insomma ora dovrebbe essere a posto ;)
 
Grazie a tutti e 2
Rizio