Сценарий для контроля устойчивости Интернет-соединения

Я хотел бы, чтобы это было сообщено каждый раз, когда мой маршрутизатор теряет свое интернет-соединение.

Я хотел бы иметь свою систему Ubuntu, посылают мне электронное письмо каждый раз, когда системный журнал маршрутизатора отображает сообщение "ссылка Ethernet вниз".

Это возможно? Я полагаю, что должен был бы записать сценарий, действительно ли я прав?

2
задан 14 December 2015 в 08:39

4 ответа

Можно попробовать что-то как этот в задании крона

#!/bin/bash
wget -q --tries=10 --timeout=20 --spider http://google.com
dt=$(date +%Y%m%d_%H%M%S)
if [[ $? -eq 0 ]]; then
    echo "$dt:Online"
else
    echo "$dt:Offline"
    mail -s "Internet connection lost on $(hostname) at $(date)" 
fi
2
ответ дан 2 December 2019 в 03:59

Поскольку комментарий, содержащий фрагмент кода, было трудно возвратить в файл как допустимый синтаксис, я отправляю его как ответ здесь. Это было в основном, что я искал, находя сумму времен, по которым спустилось интернет-соединение.

#!/bin/bash

while true; do
    wget -q --tries=5 --timeout=20 -O - http://www.google.com > /dev/null

    if [[ $? -eq 0 ]]; then :
        else echo $(date) "offline" | tee -a $HOME/offline.csv
    fi

    sleep 5
done

Другой большой ответ, найденный https://stackoverflow.com/a/14939373/7546562, показывает этот сценарий. Я изменил его для удовлетворения потребностям, но знать, что это не может работать над всеми дистрибутивами ОС.

#!/bin/bash

while true; do
    # Test for network conection
    for interface in $(ls /sys/class/net/ | grep -v lo)
    do if [[ $(cat /sys/class/net/$interface/carrier) = 1 ]]; then OnLine=1; fi; done
    if ! [ $OnLine ]; then echo $(date) "offline" | tee -a $HOME/offline.csv; fi

    sleep 10
done

Наконец, если Вы хотите, можно добавить следующее путем выполнения sudo nano /etc/rc.local

su - YOUR_USER -c "bash /home/pi/Scripts/net2.sh" &
su - YOUR_USER -c "bash /home/pi/Scripts/net3.sh" &
0
ответ дан 2 December 2019 в 03:59

Я понимаю, что это старый вопрос, но я нашел его в поисках решения, поэтому в итоге написал его. Это сценарий оболочки, который проверяет подключение к Интернету и регистрирует любые сбои, а также скорость повторного подключения. Не стесняйтесь брать его:

https://github.com/TristanBrotherton/netcheck

5
ответ дан 3 January 2020 в 01:41

С момента появления команды ip вы можете что-то делать с помощью команды ip monitor. Попробуйте сделать что-то вроде этого:

#!/bin/bash
shopt -s extglob
ip -ts monitor neigh | while read event; do
    case "$event" in
      *router*FAILED*) POST_NOTIFICATION_OF_ROUTER_DOWN ;;
esac
done

IP-монитор будет следить за состоянием соседних хостов. Маршрутизатор является соседом, а также маршрутизатором.

Когда маршрутизатор выходит из строя, монитор отправляет следующее сообщение:

[2020-04-19T07:22:59.322335] fe80::1256:3456:ffff:1212 dev ethusb1  router FAILED

Когда маршрутизатор работает, сообщение выглядит следующим образом:

[2020-04-19T07:30:15.291261]fe80::1256:3456:ffff:1212  dev ethusb1 lladdr 10:56:11:7e:42:49 router REACHABLE

shopt -s extglob включает расширенный синтаксический анализ bash.

-ts используется для короткого формата метки времени. Функционально это не обязательно для этого, но я нахожу это полезным при регистрации вывода.

Чтобы контролировать все IP-объекты, попробуйте ip -ts контролировать все.

0
ответ дан 19 April 2020 в 14:41

Другие вопросы по тегам:

Похожие вопросы: