Кто работал с Unifi, особенно со старыми точками, знает, что периодически они начинают глючить (плавает уровень сигнала, точка начинает тупить и т.д.). Решение простое, их надо ребутить. Если кто-то знает штатный метод перезагрузки по расписанию – просьба написать в комментах.
Т.к. в небольших компаниях зачастую из постоянно работающего бывают только Windows, решено было написать универсальную программку под эту ОС.
Краткая инструкция:
Качаем файл unifi_reboot.exe и запускаем. Возникнет ошибка об отсутствии файла конфигурации после чего окно закроется. В той же директории создастся 2 дополнительных файла: логи и конфигурация
Открываем блокнотом unifi_reboot.conf
Заполняем согласно своим настройкам:
# List addresses for request:
Вводим любое количество ip адресов точек через запятую, но не менее одного
# Hostname in the same order:
Понятное имя точек через запятую, количество имен должно совпадать с количеством ip
# Username
ssh логин от точки
# Password
ssh пароль от точки
# TokenBot telegram (False if not required):
Токен бота телеграм, если оповещение в телеграм не используется пишем False или оставляем как есть
# Id user telegram or chat for alerting (False if not required):
Девятизначный id пользователя телеграм или id чата с дефисом, если оповещение в телеграм не используется пишем False или оставляем как есть
# Time-out icmp request
Максимальное время ожидание ответа на пинг от точек в секундах
# Time-out reboot
Время через которое программа снова проверит доступность точки после перезагрузки
Логика работы следующая: программа поочередно опросит точки, если доступны – попытается подключиться и перезапустить, через заданное время снова попытается опросить точку, если после перезагрузки точка доступна, то пришлет сообщение в телеграм об успешной операции, если на каком-то этапе возникнут проблемы, придет соответствующее сообщение с ошибкой. Все шаги подробно логируются в файл unifi_reboot_log.log
Далее можно создать задание в планировщике Windows
Создаем простую задачу, указываем любое понятное имя, задаем время и периодичность выполнения. В запуске программы указываем путь до unifi_reboot.exe и обязательно в поле Рабочая папка указываем полный путь до папки где лежим exeшник
После подтверждения настройка окончена
Скачать программу можно по ссылке https://imaxis.ru/downloads/unifi_reboot_1.1.exe
Версия с открытием консольного окна https://imaxis.ru/downloads/unifi_reboot_1.1_ConsoleWindow.exe
Добрый день, можете, пожалуйста, подсказать как правильно составить конфигурационный файл для работы с несколькими точками?
Сейчас проверяю на двух точках с одинаковыми логинами/паролями. Если всё ввести как в примере выше, где логин и пароль указаны один раз, то происходит перезагрузка только первой точки, после этого выполнение программы прекращается. Если указать логины/пароли через запятую и пробел(как это сделано с ip и именами), то программа пытается подключиться уже к обеим точкам, но в обоих случаях выдаёт “Authentication (password) failed”.
Добрый день, к сожалению, не реализовывал возможность подключаться к точкам с разными логинами и паролями.
Логин и пароль задаются по одному в строке
Рабочий конфиг:
# List addresses for request:
192.168.20.22, 192.168.20.23, 192.168.20.24
# Hostname in the same order:
Unifi-1, Unifi-2, Unifi-3
# Username
admin
# Password
MySuperPassword
# TokenBot telegram (False if not required):
False
# Id user telegram or chat for alerting (False if not required):
False
# Time-out icmp request
5
# Time-out reboot
40
# Instruction: https://imaxis.ru/?p=302
Важно не менять порядок строк
Нужен лог, там где логин и пароль заполнен один раз
Ещё раз проверил конфиг, всё сделано как в вашем примере.
Лог, там где логин и пароль заполнен один раз(ip адресов в конфиге 3):
2024-05-16 08:37:13,397 INFO 2024-05-16 08:37:13.397540 Script start
2024-05-16 08:37:13,398 WARNING 2024-05-16 08:37:13.397540 Error length TokenBot
2024-05-16 08:37:16,399 WARNING 2024-05-16 08:37:16.399096 Error length ID Telegram
2024-05-16 08:37:19,402 INFO Unifi-1 192.168.20.22 avalaible
2024-05-16 08:37:19,519 INFO Connected (version 2.0, client dropbear)
2024-05-16 08:37:20,579 INFO Authentication (password) successful!
2024-05-16 08:37:20,582 INFO Connected to Unifi-1 192.168.20.22 successfull
2024-05-16 08:38:00,582 INFO Unifi-1 192.168.20.22 reboot successfull
Программа перестаёт работать после первой успешной перезагрузки устройства.
Провел эксперимент, в конфиге 3 адреса, если указать неправильный пароль программа попытается соединиться с каждой из точек и для каждой выдаст в лог “Authentication (password) failed”.
А если указать пароль от второго по порядку устройства, то программа попытается соединиться с первой точкой, выдаст “Authentication (password) failed”, потом успешно соединится со второй, перезагрузит её и закончит свою работу, не пытаясь соединиться с третьей.
Перепроверил, все должно работать
В конце статьи добавил версию с открытием консольного окна для наблюдения происходящего
Попробуйте скачать, запустить, дождаться закрытия (10 секунд), ничего не меняя запустить еще раз, должен перебрать адреса по дефолту: 192.168.22.1, 192.168.22.2, 192.168.22.3 (ВАЖНО: если с этими адресами есть реальные хосты с линуксом или построенных на линуксе устройств, то на них не должен быть логин/пароль root/password)
Большое вам спасибо, теперь работает, последовательно перезагружает все точки доступа.
Ещё небольшую ошибку нашёл, если в конфиге в Id user telegram написать просто “False”, то выдаст unhandled exception in script:
“Traceback (most recent call last):
File “unifyreboot.py”, line 72, in
ValueError: invalid literal for int() with base 10: ‘False’
”
Если всё оставить в конфиге как изначально то работает, или если написать “-False”, то работает. По сути можно просто в описании поправить что эта строка должна начинаться с “-“.