<<< Назад

Вновь про PING


tarasfrompir (2020-02-18 08:12:28):

За статью спасибо - но полезность в этом КМК никакая...

(0)
 
savenko_egor (2020-02-18 12:18:35):

Тогда уж лучше так: https://pastebin.com/edGXCjfh

(1)
 
BlackWarrior (2020-02-18 15:19:19):

КМК?

(0)
 
savenko_egor (2020-02-18 15:20:36):

КМК - "как мне кажется".

(0)
 
Yashalta2 (2020-02-26 13:57:59):

Думаю так лучше!
Если пинуется "IP" то, пишем еденичку в MQTT.
Если не пингуется то, шлем "0".
Так же релизован лог. файл для записи что, когда, отвалилось лобо "подцепилось"! Правда нужно раскоментировать в коде нужные строки.
И все это завернуто в бесконечный цикл, который регулируется 5-ти секундными паузами (изменить на нужное время).

!/bin/bash

LOGFILE="/home/denis/result_of_ping" # Раскомментировать если нужно вести log.file

IPS='192.168.18.18' # "IP" который нужно пинговать.
mqtt_server='192.168.18.12' # Здесь пропишем "IP" адрес "MQTT" сервера.

function zerg_ping (){ # Функция "zerg_ping" которая пингует и результат пишет либо в лог.файл или отправляет на MQTT.
for IP_ADDRESS in ${IPS}; do
echo \n
echo "TEST FOR ${IP_ADDRESS}"
ping -q -c2 ${IP_ADDRESS} > /dev/null # Заскомментировать эту строку если нужно вести log.file

ping -q -c2 ${IP_ADDRESS} && mosquitto_pub -h localhost -t "device/"$network$number -m "1" (Раскомментировать если нужно вести log.file)

if [ $? -eq 0 ]
then

echo date=$(date '+%Y-%m-%d %H:%M:%S') >> $LOGFILE 2>&1 # Пишем в лог файл дату и время если не пингуется. (Раскомментировать если нужно вести log.file)

echo ${IP_ADDRESS} "Pingable" >> $LOGFILE 2>&1 # Пишем в лог файл "IP" и слово "Pingable". (Раскомментировать если нужно вести log.file)

echo ${IP_ADDRESS} "Pingable" && mosquitto_pub -h $mqtt_server -t "IP-"$IPS -m "1" # Если пингуется пишем "1" в mqtt.
else

echo date=$(date '+%Y-%m-%d %H:%M:%S') >> $LOGFILE 2>&1 # Пишем в лог файл дату и время если не пингуется. (Раскомментировать если нужно вести log.file)

echo ${IP_ADDRESS} "Not Pingable" >> $LOGFILE 2>&1 # Пишем в лог файл "IP" и слово "Not Pingable" (Раскомментировать если нужно вести log.file)

echo ${IP_ADDRESS} "Not Pingable" && mosquitto_pub -h $mqtt_server -t "IP-"$IPS -m "0" # Если не пингуется пишем "0" в mqtt.
fi

done
}

while true; do # Бесконечный цикл

sleep 5s

read -p 'Runing "zerg_ping" function after pause in 5 seconds' -t 5
echo \n
echo "Run my function zerg_ping"
zerg_ping
done

(1)
 
BlackWarrior (2020-02-27 04:51:55):

Отличное решение. Может его оформите в своём блоге?

(0)
 

Пожалуйста, войдите в систему, чтобы добавлять комментарии Присоединиться!