Как сделать уведомлении о пропаже интернета с ubuntu?

Здравствуйте. Подскажите пожалуйста, как реализовать данную задачу:
Есть сервер с ubuntu 20.04 на Oracle и домашний Mikrotik со статическим IP (допустим 100.120.30.100).
Нужно чтобы оракловский сервер с периодичностью в 1 минуту пинговал IP 100.120.30.100 и:
1.Если пинг идет (например за 3000мс) , ничего пока что не делать.
2.Если пинг не идёт, отправить единожды (а не спамить каждую минуту) уведомление через телеграм (просто открыть заранее созданную ссылку N1 через его api)
3.Если пинг снова появился, отправить единожды уведомление через телеграм по заранее созданной ссылке N2.
И так по кругу (Есть пинг-1 уведомление, нет пинга-2 уведомление и т.д.)
Буду очень благодарен за ответ
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
caramingo
@caramingo
Искал подобный скрипт чтоб запускать через крон каждую минут и чтоб не "спамил" постоянно
вот скрипт

#!/bin/bash

HOSTS="google.com 8.8.4.4"

SUBJECT="Host Down"

ping_attempts=1
down_hosts=/stuff/scritp/down_hosts.txt

for myHost in $HOSTS
do
        count=$(ping -c $ping_attempts $myHost | awk -F, '/received/{print $2*1}')

        if [ $count -eq 0 ]; then
                if  [ $(grep -c "$myHost" "$down_hosts") -eq 0 ]; then
                        /usr/bin/curl -s -X POST https://api.telegram.org/botTOKEN/sendMessage -d chat_id=123 -d text="$myHost ping FAILED at $(date)" > /dev/null 2>&1
                       echo "$myHost" >> $down_hosts
                fi
        else
                if  [ $(grep -c "$myHost" "$down_hosts") -eq 1 ]; then
                         /usr/bin/curl -s -X POST https://api.telegram.org/botTOKEN/sendMessage -d chat_id=123 -d text="$myHost ping OK at $(date)" > /dev/null 2>&1
                        sed -i "/$myHost/d" "$down_hosts"
                fi
        fi
done


Сообщения шлет телеграм бот, замени TOKEN на свой и chat_id на своего бота.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@alexvdem
А не проще ли это сделать наоборот, чтобы Микротик пинговал сервер и сообщал о статусе соединения? В Микротике для этого есть готовый инструмент - Watchdog.
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Ну, так напишите простецкий скрипт, который бы складывал в какой-нибудь файл состояние и периодически сравнивал его содержимое с результатами пинга. Условно, если в файле 0, а пинг идёт - сообщать. Если в файле 1, а пинг не идёт - тоже.
Ответ написан
Варианты такие:
  1. Написать скрипт
  2. Найти скрипт
  3. Использовать какую-либо систему сетевого мониторинга, к примеру, Icinga + Icinga Notification Telegram
  4. Что-то ещё
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы