ip_node.list
beschrieben.Ich werde es wie folgt beschreiben.
192.168.11.21
192.168.11.29
192.168.11.69
192.168.11.88
192.168.11.99
So was.
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; #Wenn das Ping-Ergebnis auf Japanisch angezeigt wird, ist der reguläre Ausdruck von grep problematisch, also LANG=Fixiert auf C.
:> ~/mail.dat; #Setzen Sie den Text für die E-Mail-Benachrichtigung auf 0 Byte
while read line;do #Geben Sie die Datei in den unten stehenden Teil ein$Jede Zeile enthält eine Variable
_RET_=`ping -c 5 -i 1 -w 10 -s 32 ${line} | grep 'loss' | grep -oP '[0-9]+%'`; #Führen Sie Ping durch, passen Sie Optionen usw. nach Ihren Wünschen an und erhalten Sie das passende Teil mit gpre
echo "${line} ${_RET_} loss";
[ "0%" == "${_RET_}" ] && continue; # 0%Abgesehen von der Benachrichtigung ist dies in Ordnung
echo "${line} ${_RET_} loss" >> ~/mail.dat; #Schreiben Sie zur Benachrichtigung
done <~/ip_node.list;
_RET_=`du ~/mail.dat | awk '{print $1}' | xargs expr`; #Holen Sie sich die Größe der Datei zur Benachrichtigung
[ ! 0 -eq ${_RET_} ] && mail -s "IP packet loss alert." -r [from addr] [to addr] < ~/mail.dat; #Wenn nicht Null, benachrichtigen Sie
exit 0;
Recommended Posts