Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Простой shell-скрипт для удалённой перезагрузки UAP, UniFi Network
 
Чтобы решить свою проблему, описанную здесь: https://community.ui.com/questions/7918dcff-018d-4558-a9e8-d748abbc6ad7, я написал простой и быстрый shell-скрипт. В него можно вставить ваше имя пользователя (по умолчанию ubnt), пароль (по умолчанию ubnt) и IP-адрес удалённой точки доступа UniFi (по умолчанию 192.168.1.11) для её перезагрузки.  
Скрипт я сохранил как GitHub Gist здесь: https://gist.github.com/stevejenkins/0c2687936f31cd0deda1.  
Для работы скрипта нужен sshpass (скорее всего он есть в вашем дистрибутиве Unix/Linux через dnf, yum или apt).  
Я запускаю скрипт от root через этот cron-задачу, которая перезагружает мою точку доступа UAP каждое утро в 3:45:  
45 3 * * * /usr/local/bin/uap-reboot.sh > /dev/null 2>&1 #Перезагрузка UniFi AP  
Поскольку я запускаю скрипт от root, я указал переменную known_hosts_file как /root/.ssh/known_hosts, но стандартное значение /dev/null в самом скрипте тоже отлично подойдёт (только будет появляться лишняя строчка с выводом при запуске).
 
Вы можете избежать зависимости от sshpass, добавив свой публичный ssh-ключ на точки доступа, выполнив следующие действия:  
ssh user@ap.address  
mkdir .ssh  
touch .ssh/authorized_keys  
echo "<ваш публичный ключ>" > .ssh/authorized_keys
 
Во-первых, кажется, существует просто несметное количество способов расписать перезагрузки Unifi AP. Честно говоря, все они супер- nerdовые через CLI и требуют каких-то невероятных навыков, чтобы их активировать. Так что, если среди читающих есть сотрудники Ubiquiti — ПОЖАЛУЙСТА, сделайте ПРОСТОЙ и ЛЕГКИЙ В НАСТРОЙКЕ вариант запланированных перезагрузок прямо через контроллер.

Теперь, что касается решения, предложенного здесь — оно идет прямо на уровне AP, и это полезно, но шаги не совсем понятны, и люди не видят результатов. Не мог бы кто-нибудь подробно объяснить, как это сделать: каждый шаг, каждое нужное приложение, с картинками, для таких, как мы, далеких от CLI. Спасибо! 👍
 
И вот волшебный вопрос: в чём разница между «встроенными и полноценными» или «встроенными компьютерами и полноценными компьютерами» или «встроенными операционными системами и полноценными операционными системами». С уважением. П.С. Эта история будет слишком большой для одного поста.
 
Я точно попробую это. Но меня это ставит в тупик: почему это нельзя сделать так же просто, как добавить cron-задачу на любом unix-сервере?
 
Посмотрите на Re: mPower Mini: shell scripting. Будет работать для UAP. С уважением,
 
Я выяснил, что изменения в /etc не сохраняются после перезагрузки, поэтому папка, созданная для хранения crontab, удаляется при перезагрузке. Пытаюсь найти нормальное решение, но пока без удачи. Лучший вариант на данный момент — создать папку в /etc/persistant для хранения crontab и сделать ссылку на неё в /etc/crontabs. Мне просто нужен способ создавать эту ссылку после каждой перезагрузки, пробовал rc.prestart и rc.poststart — безрезультатно.
 
Добро пожаловать на этот форум, @Dsehulster!

Советую оставить здесь запрос на новую функцию: https://community.ui.com/feature-requests. Только сначала проверь, нет ли уже похожего запроса. Если такой есть — просто проголосуй за него.
 
Извините за вопрос, но у меня ничего не получается... Вот что я сделал:  
Подключился по SSH к AP-AC и выполнил mkdir /var/etc/crontabs, потом crontab -e.  
Вошёл в режим вставки клавишей "i" и вписал  
50 * * * * /usr/sbin/reboot

Сохранил и вышел с помощью ":wq", но ничего не происходит. Насколько я понимаю, точка доступа должна перезагружаться каждый час в 50 минут, но ничего не происходит.  

Можете подсказать, что я делаю не так?  
Заранее спасибо, очень ценю вашу помощь!
 
Хихи, не знала этого, спасибо! Я пыталась отредактировать это с помощью VI, а потом сохранить и выйти. Завтра посмотрим, правильно ли я всё сделала и перезагрузился ли AP. Ещё раз спасибо!
 
Это редактор VI. http://www.howtogeek.com/102468/a-beginners-guide-to-editing-text-files-with-vi/
 
Это интерфейс редактора VI? Извините, я новичок в этом.
 
Хорошо, большое спасибо! Итак, я подключаюсь по SSH к своему AC-Pro и ввожу следующее: mkdir /var/etc/crontabs, а затем crontab -e. Вот что я получаю в терминале на Mac:

- /etc/crontabs.8751 [Изменено] 1/1 100%

Когда это появляется, я могу нажимать любые клавиши, но никаких реакций нет, и я не могу ввести никакую другую команду... 😕
 
Потому что это задача cron, которую нужно добавить в ваш crontab. Чтобы отредактировать свой crontab, используйте команду:  
crontab -e  
Убедитесь, что понимаете, как работает расписание заданий cron. В моём примере устройство должно перезагружаться каждый день в 6:00 утра.
 
Теперь я понимаю твою точку зрения, @sjjenkins, раньше мне это казалось бессмысленным, потому что у меня в домашней сети всего одна точка доступа. Но твой способ гораздо удобнее, когда управляешь несколькими точками доступа.
 
@dawtaylor

Решение: Это действительно кажется именно тем, что я искал, но... У меня UniFi AP-AC-Pro с прошивкой 3.7.17.5220. Когда я подключаюсь по SSH к AP-AC-Pro и ввожу команду mkdir /var/etc/crontabs — команда срабатывает. После этого я ввожу, как вы писали,  
0 6 * * * /usr/sbin/reboot  
и каждый раз получаю такую ошибку:  
BusyBox v1.19.4 (2016-09-12 17:18:33 PDT) built-in shell (ash)  
Введите 'help' для списка встроенных команд.

BZ.v3.7.17# mkdir /var/etc/crontabs  
BZ.v3.7.17# 0 6 * * * /usr/sbin/reboot  
-sh: 0: not found  
BZ.v3.7.17#

Что я делаю не так? Я пропустил какую-то команду? Очень хотелось бы, чтобы AP-AC-Pro перезагружался каждый день без «внешней помощи». Заранее большое спасибо за ответ!
 
Это тоже должно отлично сработать, @dawtaylor. Преимущество, которое я вижу в том, чтобы иметь один центральный сервер, управляющий перезагрузками множества удалённых точек доступа, в том, что немного проще изменить расписание с одного места для всех точек. Но главное преимущество твоего подхода в том, что если точка теряет сетевое подключение, но всё ещё может выполнять внутренние shell-команды, перезагрузка может вернуть её в рабочее состояние.
 
Почему бы не запустить cron-задачу прямо на AP? ssh AP_IP -l AP_USER Тебя попросят ввести пароль администратора AP. Оказавшись внутри AP, создай каталог crontabs. mkdir /var/etc/crontabs А потом уже можешь расписать свои cron-задачи. 0 6 * * * /usr/sbin/reboot
Страницы: 1
Читают тему (гостей: 2)