Je vais le décrire comme suit.
192.168.11.21
192.168.11.29
192.168.11.69
192.168.11.88
192.168.11.99
Comme ça.
bash
#!/bin/bash
LANG=C;
export LANG;
:> ~/mail.dat;
while read line;do
_RET_=`ping -c 5 -i 1 -w 10 -s 32 ${line} | grep 'loss' | grep -oP '[0-9]+%'`;
echo "${line} ${_RET_} loss";
[ "0%" == "${_RET_}" ] && continue;
echo "${line} ${_RET_} loss" >> ~/mail.dat;
done <~/ip_node.list;
_RET_=`du ~/mail.dat | awk '{print $1}' | xargs expr`;
[ ! 0 -eq ${_RET_} ] && mail -s "IP packet loss alert." -r [from addr] [to addr] < ~/mail.dat;
exit 0;
bash
#!/bin/bash
LANG=C;
export LANG; #Lorsque le résultat Ping est affiché en japonais, l'expression régulière de grep est gênante, donc LANG=Fixé à C
:> ~/mail.dat; #Définissez le corps de la notification par e-mail sur 0 octet
while read line;do #Entrez le fichier dans la partie terminée ci-dessous$Chaque ligne contient une variable
_RET_=`ping -c 5 -i 1 -w 10 -s 32 ${line} | grep 'loss' | grep -oP '[0-9]+%'`; #Exécutez Ping, ajustez les options, etc. à votre guise et obtenez la pièce correspondante avec gpre
echo "${line} ${_RET_} loss";
[ "0%" == "${_RET_}" ] && continue; # 0%À part la notification, c'est bien
echo "${line} ${_RET_} loss" >> ~/mail.dat; #Ecrire pour notification
done <~/ip_node.list;
_RET_=`du ~/mail.dat | awk '{print $1}' | xargs expr`; #Obtenez la taille du fichier pour notification
[ ! 0 -eq ${_RET_} ] && mail -s "IP packet loss alert." -r [from addr] [to addr] < ~/mail.dat; #Si différent de zéro, notifier
exit 0;
Recommended Posts