PDA

Visualizza la versione completa : [BASH]Monitoring script


w0nz3r
19-07-2012, 15:27
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):


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

Il mio bash script (incompleto) è questo:



#!/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

Lo script funziona, ma la variabile $i è l'ip del GW, mentre io vorrei che apparisse il nome del server down (colonna 1).

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-

Loading