Portál AbcLinuxu, 12. května 2025 08:56
ping -c3 192.168.100.10 >/dev/null if [ "$?" == "0" ]; then cp obrazek; elif [ "$?" == "1" ]; then cp jiny obrazek; cat hlaska | mail -s Nejde AP1 neco@nekam.cz; fi
ping -c3 192.168.100.11 >/dev/null if [ "$?" == "0" ]; then cp obrazek; elif [ "$?" == "1" ]; then cp jiny obrazek; cat hlaska | mail -s Nejde AP2 neco@nekam.cz; fi exit 0Do crontabu jsem zapsal aby se tento script poustel v intervalu 10min. Problem ale nastava ve chvili kdy ap opravdu vypadne a neodpovida na ping.Kdyz nejsem v dosahu a nemohu chybu opravit tak mi script co 10min posila email o tom ze ap nejde.
IP="192.168.100.10" echo "1" > "$IP" # ulozeni altualniho stavu: prislusna IP dostupna nebo echo "0" > "$IP" # ulozeni altualniho stavu: prislusna IP nedostupna PoslStav="$(cat "$IP")" # nacteni posledniho stavu prislusne IP adresy
/root/test/ping.sh
:
#!/bin/bash Cesta="/root/test" IpAdr="192.168.100.10 192.168.100.20 192.168.100.30" # testovane adresy Ping="ping -c3" # prikaz ping date >> "$Cesta/ping.log" # pripsani do logu for Adr in $IpAdr; do PoslStav="$(cat "$Cesta/$Adr" 2>/dev/null)" # nacteni posledniho stavu prislusne IP adresy [ "$PoslStav" = "1" ] || PoslStav=0 $Ping $Adr &> /dev/null Dostup=$? # navratovy kod posledniho prikazu 0=OK (dostupnost) [ "$Dostup" = "0" ] && Dostup=1 || Dostup=0 # dostupnost [ "$PoslStav" == "$Dostup" ] || { # aktualni stav vuci posl.stavu se zmenil # poslat e-mail ( zmena stavu: $Adr je ve stavu $Dostup ) echo "$Dostup" > "$Cesta/$Adr" # ulozeni altualniho stavu do pom.soub. se jmenem adresy (IP) echo "stav:$Dostup $(date)" >> "$Cesta/$Adr.log" # pripsani do prislusneho logu zmenu stavu if [ "$Dostup" = "1" ]; then # zmena stavu na 1 # cp ...... else # zmena stavu na 0 # cp ...... fi }Upozorňuji, že jsem to netestoval na funkčnost a překlepy. Ani nijak neoptimalizoval. Bez záruky! Vylepšení vítány.
[ "$PoslStav" = "$Dostup" ] || { # aktualni stav vuci posl.stavu se zmenilA na konci mi chybí příkaz
done
.
#!/bin/bash
#echo "**************************************" >> /root/test/ping_AP.log
#date >> /root/test/ping_AP.log
IPADRESY="AP_1 AP_2 AP_3 AP_4 AP_5 AP_6 AP_7 cl_vysluni \
172.20.42 172.20.44 10.139.48.17 \
mikrotik_1 mikrotik_2 www.example.com \
"
for ADRESA in $IPADRESY; do
if ping $ADRESA -c 3 -w 4 -i 0.2 | grep "100% packet loss" > /dev/null
then
# echo -e "\033[1;31mPOZOR!!!!! $ADRESA je DEAD. \033[0m"
# echo "$ADRESA KO." >> /var/log/radia/ping_all.log
echo "radio $ADRESA nejede" |mail -s radio $ADRESA nejede nobody@example.com
else
# echo -e "\033[1;32m$ADRESA je OK. \033[0m"
# echo "$ADRESA OK." >> /var/log/radia/ping_all.log
fi;
done;
snad je to dostatecne vymluvne
snad je to dostatecne vymluvneVýmluvné to je, ale přečti si znovu dotaz tazatele. Toto tazatel víceméně má, ale ptá se na něco úplně jiného. Nechce opakovaně odesílat stav, ale pouze změnu stavu (vůči poslednímu stavu) .....
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.