Questo articolo fornisce alcuni semplici script per eseguire la scansione di rete e di monitoraggio. Ovviamente, questi script non sono a partità di sistemi software per il monitoraggio di rete dedicato ma potrebbero essere utili per le piccole reti.
Scansione subnet di rete 192.168.1.1-255/24:
#!/bin/bash # ls_ping() { ping -c 1 $1 > /dev/null [ $? -eq 0 ] && echo Host con IP: $i attivo. } for i in 192.168.1.{1..255} do ls_ping $i & disown done
Esecuzione:
./pingls.sh
OUTPUT:
Host con IP: 192.168.1.1 attivo. Host con IP: 192.168.1.50 attivo.
Oppure:
#!/bin/sh : ${1?"Usare: $0 seguito dall'ip come: es. '192.168.1.'"} subnet=$1 for addr in 'seq 0 1 255 '; do # ( echo $subnet$addr) ( ping -c 3 -t 5 $subnet$addr > /dev/null && echo $subnet$addr ATTIVO ) & done
Notifica quando il server è giù :
#!/bin/bash
#
: ${1?"Usare: $0 ip o nome host da controllare es. '192.168.1.100' 'google.com'"}
for i in $@
do
ping -c 1 $i &> /dev/null
if [ $? -ne 0 ]; then
echo "'date': ping fallito, $i host spento!" | mail -s "$i host spento!" vostroindirizzo@email.it
fi
done
Esecuzione script :
./controllo_hosts.sh 192.168.1.100 192.168.1.152 google.com
Creare un registro di monitoraggio:
#!/bin/bash
#
: ${1?"Usare: $0 ip o nome host da controllare es. '192.168.1.100' 'google.com'"}
LOG=/tmp/controllo-stato-server.log
TEMPOINSECONDI=3600
EMAIL=vostroindirizzo@email.it
for i in $@; do
echo "$i-ON!" > $LOG.$i
done
while true; do
for i in $@; do
ping -c 1 $i > /dev/null
if [ $? -ne 0 ]; then
STATUS=$(cat $LOG.$i)
if [ $STATUS != "$i-OFF!" ]; then
echo "'date': ping fallito, $i host spento!" |
mail -s "$i host spento!" $EMAIL
fi
echo "$i-OFF!" > $LOG.$i
else
STATUS=$(cat $LOG.$i)
if [ $STATUS != "$i-ON!" ]; then
echo "'date': ping OK, $i host acceso!" |
mail -s "$i host acceso!" $EMAIL
fi
echo "$i-ON!" > $LOG.$i
fi
done
sleep $TEMPOINSECONDI
done
Esecuzione script:
./controllo-stato-server.sh 192.168.1.2 mioserver google.com