|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Messaggi: 61
|
[BASH]Monitoring script
Ciao ragazzi,
ho bisogno di una mano Avrei bisogno di monitorare alcuni server e farmi inviare mail se uno di questi non risponde al ping. Necessito però di utilizzare un file (list.txt) che contiene 3 colonne (nome server, ip gataway, ip address) e n righe. Il file (list.txt) è così composto (esempio): Codice:
server1 30.30.30.1 30.30.21.1 server2 30.30.30.2 30.30.21.2 server3 30.30.30.3 30.30.21.3 Codice:
#!/bin/bash
#Check IP
for i in $(cat list.txt | awk '{ print $2}')
do
#n=$(cat lista | awk '{ print $1}')
ping -c 1 -w 1 $i &> /dev/null
if [ $? -ne 0 ]; then
echo "GW $i DOWN!"
fi
done
Se rimuovo il commento da #n=$(cat lista | awk '{ print $1}') e inserisco la variabile $n in "echo" (echo "GW $n DOWN!") mi da giustamente come output tutta la lista della colonna 1... Dovrei poi inserire allo stesso modo il check della colonna 3 e l'alert via mail (check ogni 15 min nel crontab). Grazie a tutti per l'aiuto! -w- |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
Ciclare sulle intere righe del file e separare ip, nome e gateway all'interno del ciclo?
Rapidamente (sicuramente la sintassi va corretta): Codice:
for i in $(cat lists.txt)
do
ip = echo $i | awk '{ print $2}'
server = echo $i | awk '{ print $1}'
ping -c 1 -w 1 $ip &> /dev/null
if [ $? -ne 0 ]; then
echo "GW $server DOWN!"
fi
done
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2006
Messaggi: 61
|
Grazie 1000,
utilizzando la tua idea sono riuscito nel mio intento. Ho utilizzato però un ciclo while in questo modo: Codice:
#Check IP
while read server gw ip; do
if ! ping -c 1 -w 1 $ip &> /dev/null ; then
echo "GW $server ($gw) IS DOWN!"
fi
done < lista.txt
while read server gw ip; do
if ! ping -c 1 -w 1 $ip &> /dev/null ; then
echo "IP $server $gw IS DOWN!"
fi
done < list.txt
Già che ci sono... Posso utilizzare un solo ciclo while? Se si in che modo? Inoltre dovrei fare in modo che mandi una mail solo se entrambi gli ip ($ip e $gw) dello stesso host ($server) siano down. E con questa avrei concluso! Grazie ancora... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:45.



















