Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Включить/выключить SSID через API, UniFi Network
 
Привет! Ищу способ включать или отключать определённую беспроводную сеть (либо через контроллер, либо на каждом Access Point по отдельности, мне без разницы), используя API или каким-то другим внешним методом. Есть ли возможность сделать это, желательно с помощью bash-скрипта (у меня уже есть другие задачи на bash, но могу использовать и php-скрипт или что-то ещё). Спасибо!
 
Я внёс некоторые изменения в вышеупомянутый пост. Скрипт обновлён, чтобы его было проще настраивать, и добавлены инструкции, которые должны помочь другим пользователям. Надеюсь, кому-то это пригодится!
 
Да! Спасибо, что заметили это. Я исправил скрипт.
 
Спасибо, наверное, вторая функция «enable_guest» на самом деле должна называться «disable_guest», да?
 
Последнее обновление: 28.07.18  
Я написал bash-скрипт для включения, отключения или проверки статуса WiFi сети UniFi. Я буду обновлять этот gist по мере внесения изменений: https://gist.github.com/jcconnell/0ee6c9d5b25c572863e8ffa0a144e54b  

Требования:  
- jq  
- curl  

Настройки пользователя:  
- unifi_username: имя пользователя для контроллера  
- unifi_password: пароль пользователя. Оставьте в одинарных кавычках.  
- unifi_controller: URL-адрес, по которому вы заходите на контроллер  
- wifi_id: ID WiFi-сети, которой вы хотите управлять. Как получить ID описано ниже  
- cookie: путь к cookie для curl. Убедитесь, что пользователь, запускающий скрипт, имеет права на этот каталог/файл  

Инструкция:  
- Скрипт запускается с одним из параметров (enable | disable | status):  
./unifi_wifi.sh parameter  

Как получить wifi_id:  
- Зайдите в контроллер и авторизуйтесь  
- Перейдите в Settings > Wifi Networks  
- Нажмите Edit рядом с нужным SSID  
- Скопируйте ID из конца URL  
- В следующем примере ID — (000d00c0e0b0e00d00000000):  
https://example:8443/manage/site/default/settings/wlans/00bd00a6e0000e9da2cd­e10c/edit/000d00c0e0b0e00d00000000  

Использование:  
- Создайте новый файл на вашей машине. Я назвал его unifi_wifi.sh  
- Скопируйте в него содержимое ниже  
- Сохраните файл  
- Выполните chmod +x unifi_wifi.sh (вставьте имя вашего файла)  
- Запускайте ./unifi_wifi.sh  

#!/bin/bash  
unifi_username=USERNAME  
unifi_password='PASSWORD'  
unifi_controller=https://EXAMPLE.COM:8443  
wifi_id=YOUR_WIFI_ID  
cookie=/tmp/cookie  
curl_cmd="curl -s -S --cookie ${cookie} --cookie-jar ${cookie} --insecure "  

unifi_login() {  
 # аутентификация на контроллере  
 # Подавляем вывод, добавляя > /dev/null  
 ${curl_cmd} -H "Content-Type: application/json" -X POST -d "{\"password\":\"$unifi_password\",\"username\":\"$unifi_username\"}" $unifi_controller/api/login > /dev/null  
}  

unifi_logout() {  
 # выход из системы  
 ${curl_cmd} $unifi_controller/logout  
}  

enable_wifi() {  
 # включение гостевой WiFi сети  
 # Подавляем вывод  
 ${curl_cmd} "$unifi_controller"'\/api/s/default/rest/wlanconf/'"$wifi_id­" -X PUT --data-binary '{"_id":"'"$site_id"'","enabled":true}' --compressed > /dev/null  
}  

disable_wifi() {  
 # отключение гостевой WiFi сети  
 # Подавляем вывод  
 ${curl_cmd} "$unifi_controller"'\/api/s/default/rest/wlanconf/'"$wifi_id­" -X PUT --data-binary '{"_id":"'"$site_id"'","enabled":false}' --compressed > /dev/null  
}  

check_status() {  
 # проверка статуса WiFi сети  
 # Подавляем вывод  
 response=$(${curl_cmd} "$unifi_controller"'\/api/s/default/rest/wlanconf/'"$wifi_id­" --compressed)  
 status=$(echo $response | jq '.data[0].enabled')
 if [ "$status" == "true" ]; then
   exit 0  
 elif [ "$status" == "false" ]; then
   exit 1  
 else  
   echo  
   exit -1  
 fi  
}  

unifi_login  

if [ "$1" == "enable" ]; then
 echo "Включаю WiFi."  
 enable_wifi  
elif [ "$1" == "disable" ]; then
 echo "Отключаю WiFi."  
 disable_wifi  
elif [ "$1" == "status" ]; then
 check_status  
else  
 echo "Нужно указать параметр командной строки [enable|disable|status]."
fi  

unifi_logout
 
Да, используя API, можно сделать такой скрипт, который здесь работает. Я тут выложил свою версию скрипта для выключения SSID. Чтобы включить его, понятно, надо установить "enabled" в "true", а не в "false". Можно еще улучшить скрипт, чтобы он принимал параметры из командной строки для статуса, SSID и так далее.
 
Я хочу написать скрипт, который можно запускать из командной строки для включения и отключения гостевой Wi-Fi сети. Цель — запускать этот скрипт через Home Assistant. Кто-нибудь уже двигался в этом направлении?
 
Если цель этого — отключать гостевую сеть (SSID с каптив-порталом) на праздники, я уже отправлял запрос на такую встроенную функцию. Это должен быть список исключений для еженедельного расписания, которое уже есть. https://community.ui.com/feature-requests/e0844896-c40c-4bca-b280-065d8d32bfde Извините, если это не то, что вам нужно.
Страницы: 1
Читают тему (гостей: 1)