Я хотел бы, чтобы это было сообщено каждый раз, когда мой маршрутизатор теряет свое интернет-соединение.
Я хотел бы иметь свою систему Ubuntu, посылают мне электронное письмо каждый раз, когда системный журнал маршрутизатора отображает сообщение "ссылка Ethernet вниз".
Это возможно? Я полагаю, что должен был бы записать сценарий, действительно ли я прав?
Можно попробовать что-то как этот в задании крона
#!/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
Поскольку комментарий, содержащий фрагмент кода, было трудно возвратить в файл как допустимый синтаксис, я отправляю его как ответ здесь. Это было в основном, что я искал, находя сумму времен, по которым спустилось интернет-соединение.
#!/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" &
Я понимаю, что это старый вопрос, но я нашел его в поисках решения, поэтому в итоге написал его. Это сценарий оболочки, который проверяет подключение к Интернету и регистрирует любые сбои, а также скорость повторного подключения. Не стесняйтесь брать его:
С момента появления команды 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 контролировать все
.