Начальные условия
- 2 канала WAN от разных провайдеров, с разными скоростями
- Провайдер1 WAN1 (192.168.1.1) — 10 Мбит
- Провайдер2 WAN2 (192.168.2.1) — 20 Мбит
К подключению резервного интернет канала дома каждый приходит по своим причинам, но некоторые устройства в умном доме требуют постоянного подключения к сети интернет, оперативность получения важных уведомлений напрямую зависит от стабильности подключения к тому же, как же мы узнаем, что интернет пропал, не имея резервного канала 🙂 Читать

В моей домашней сети все устройства, относящиеся к умному дому отселены в отдельную сеть, это не только шлюзы и лампы Xiaomi, а также телевизор, медиа проигрыватель, ресивер, различные Wi-Fi реле и розетки, и, конечно сервер Home Assistant. Читать
Сегодня в статье разберем пример написания скрипта для проверки доступности ресурса при помощи BASH в Linux. Может кому то будет полезен :).
И так поехали:
sudo nano ~/ping_test.sh
#!/bin/bash
PATH=/bin:/bin/bash:/usr/bin:/sbin:/usr/sbin
IP=("10.5.5.1") # тут либо ip, либо FQDN вашего домена
for g in ${IP[@]}; do
result=$(ping -c 2 -W 1 -q $g | grep transmitted)
pattern="0 received";
if [[ $result =~ $pattern ]]; then
while [[ $result =~ $pattern ]]
do
result=$(ping -c 2 -W 1 -q $g | grep transmitted)
echo "$result"
done
else
echo "$g is up"
fi
done
Скрипт будет проверять доступность ресурса при помощи команды ping до тех пор пока данный ресурс не выйдет на связь. Для автоматизации давайте запишем задание в crontab. Задание будет срабатывать при перезагрузке системы.
@reboot /bin/bash /sbin/ping_test.sh
Также если вам необходимо чтобы еще отправлялось уведомление на почту, то скрипт примет такой вид:
#!/bin/bash
PATH=/bin:/bin/bash:/usr/bin:/sbin:/usr/sbin
IP=("10.5.5.1")
for g in ${IP[@]}; do
result=$(ping -c 2 -W 1 -q $g | grep transmitted)
pattern="0 received";
if [[ $result =~ $pattern ]]; then
while [[ $result =~ $pattern ]]
do
result=$(ping -c 2 -W 1 -q $g | grep transmitted)
#отправим уведомление на почту
sendmail -f "кому@yandex.ru" -t "от_кого@yandex.ru" -u "Проблема с доступностью сервера" -m "Сообщение от $(hostname) . $ADDR недоступен с $(date)" -xu "логин" -xp "пароль" -s "smtp.yandex.ru" -o "message-charset=utf-8"
notify-send "Статус сервера $IP" "Offline, сообщение направлено на почту"
done
else
echo "$g is up"
fi
done
fi
chmod +x ping_test.sh
Для того чтобы сработала отправка почты нужно установить пакет sendmail
sudo apt install sendmail
Запускать задание через каждых 10 секунд:
#!/bin/bash
PATH=/bin:/bin/bash:/usr/bin:/sbin:/usr/sbin
IP=("10.5.5.1")
while :;do
for g in ${IP[@]}; do
result=$(ping -c 2 -W 1 -q $g | grep transmitted)
pattern="0 received";
if [[ $result =~ $pattern ]]; then
while [[ $result =~ $pattern ]]
do
result=$(ping -c 2 -W 1 -q $g | grep transmitted)
echo "$result"
done
else
echo "$g is up"
fi
done
sleep 10
done
[endtxt]
Сегодня разберемся как можно посмотреть пароли от Wi-Fi в операционных системах Linux на примере MX Linux – Debian подобной системе.
Когда вы подключаетесь к какой либо сети по Wi-Fi, то обычно вводите от нее пароль. Данный пароль система сохраняет, чтобы в дальнейшим подключится к данной сети автоматически.
Рассмотрим, как посмотреть сохраненные пароли для Wi-Fi соединений в Ubuntu|Debian|LinuxMint. Читать
Сегодня в статье поговорим Как узнать и поменять значение MTU в Linux/Ubuntu/Debian.
MTU – maximum transmission unit – максимальный размер пакет или фрейма в байтах, который может быть отправлен единовременно без фрагментации.
Узнать значение MTU для всех интерфейсов можно выполнив в консоли команду ip link
ip link | grep mtu
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
Чаще всего встречается 1500 — это значение по умолчанию для Ethernet интерфейсов.
Поменять MTU на сервере с Ubuntu/Debian можно так:
sudo ip link set dev eth0 mtu 1400
или так для старых систем:
sudo ifconfig eth0 mtu 1400
После данной команды начинает использоваться значение 1400, а вот после перезагрузки это значение MTU сбросится в дефолтное
Открываем настройку сетевых интерфейсов:
sudo nano /etc/network/interfaces
К нужному адаптеру добавляем строчку со значением MTU. Вот пример настройки:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.5.5.2
netmask 255.255.255.0
gateway 10.5.5.1
mtu 1400
Перезапускаем сеть:
systemctl restart networking
Значение теперь будет применяться даже после перезагрузки.
Вот еще один пример как можно сменить значение MTU, но уже через утилиту Netplan на Ubuntu 18.04/20.04
network:
ethernets:
ens3:
mtu: 1400
addresses:
- 198.18.12.15/24
- 2a01:d0:c353:183::15/64
dhcp4: false
gateway4: 198.18.12.1
gateway6: 2a01:d0:c353:183::1
nameservers:
addresses:
- 198.18.12.3
- 2a01:d0:c353:183::3
search: []
version: 2
[endtxt]