Скрипт wfcli.py предоставляет возможность управления контроллером через REST API и выполнения некоторых команд, доступных из веб-интерфейса контроллера, он предназначен для выполнения администратором однотипных и ежедневных задач без использования веб-интерфейса.

Скрипт написан на Python и для его работы необходима версия Python 3.11 или выше. Скрипт поддерживает два режима работы: интерактивный и командный интерфейс (CLI). Ниже описаны функциональные возможности скрипта, аргументы командной строки и примеры использования.

Запуск скрипта

Перед запуском скрипта необходимо установить библиотеку requests, это единственная зависимость скрипта. Установить библиотеку можно двумя способами:

  • С помощью менеджера пакетов apt: выполните в консоли команду sudo apt-get install python3-requests
  • Через менеджер Python-пакетов pip (при его наличии в системе): выполните в консоли команду pip install requests

После запуска скрипта он автоматически определит доступный протокол для работы с REST API (HTTP или HTTPS), а также при успешной авторизации создаст файл кэша токена авторизации .wfcli_cache в папке, из которой он был запущен, для уменьшения количества запросов авторизации и ускорения работы с REST API. При наличии файла с данными для авторизации и токеном, для работы с API будет использоваться токен, если он был получен при авторизации на том же контроллере, который указан в аргументах запуска.

Общий синтаксис

python wfcli.py [-h] [-s SERVER] [-u USER] [-p PASSWORD] [-v] {ssid, ssid_profile, client, ap} ...

Позиционные аргументы

  • {ssid, ssid_profile, client, ap}: Основные команды для управления различными объектами контроллера:
    • ssid: Управление SSID по имени
    • ssid_profile: Управление SSID по номеру профиля
    • client: Управление клиентами
    • ap: Управление точками доступа (AP)

Опции

  • -h, --help: Показать справочное сообщение и выйти
  • -s SERVER, --server SERVER: IP-адрес контроллера (по умолчанию: localhost)
  • -u USER, --user USER: Имя пользователя веб-интерфейса (по умолчанию: admin)
  • -p PASSWORD, --password PASSWORD: Пароль веб-интерфейса (по умолчанию: admin)
  • -v, --verbose: Подробный вывод (по умолчанию отключен)

Интерактивный режим

Для запуска скрипта в интерактивном режиме запустите скрипт без позиционных аргументов:

python wfcli.py -s 10.20.30.40 -u admin -p password

После запуска интерактивного CLI используйте команды описанные ниже.

Примеры использования

Управление SSID

  • Команда: ssid
  • Субкоманды: enable, disable, clients

    • enable: Включить SSID (не выводит сообщений)
    • disable: Отключить SSID (не выводит сообщений)
    • clients: Показать список клиентов, подключенных к SSID с их MAC адресами, IP адресами, hostname и т.д.
  • Пример вывода команды clients для SSID с именем TestSSID1:

    $ python wfcli.py ssid clients TestSSID1
    mac                     username        hostname        ip              ssid            accessPointName
    -----------------       --------        --------        -------------   ----------      ---------------
    11:22:33:44:55:66       79012345678     Test_Client1    192.168.2.199   TestSSID1       Test_AP1
    

Управление профилями SSID

  • Команда: ssid_profile
  • Субкоманды: enable, disable, clients

    • enable: Включить профиль SSID (не выводит сообщений)
    • disable: Отключить профиль SSID (не выводит сообщений)
    • clients: Показать список клиентов, подключенных к профилю SSID с их MAC адресами, IP адресами, hostname и т.д.
  • Пример вывода команды clients для SSID с номером профиля 5:

    $ python wfcli.py ssid_profile clients 5
    mac                     username        hostname        ip              ssid            accessPointName
    -----------------       --------        --------        -------------   ----------      ---------------
    11:22:33:44:55:66       79012345678     Test_Client1    192.168.2.199   TestSSID1       Test_AP1
    

Управление клиентами

  • Команда: client
  • Субкоманды: list, show, kick

    • list: Показать список всех клиентов с их MAC адресами, IP адресами, hostname и т.д.
    • show <MAC>: Показать информацию о клиенте с заданным MAC-адресом
    • kick <MAC>: Отключить клиента с заданным MAC-адресом (не выводит сообщений)
  • Пример вывода команды list:

    $ python wfcli.py client list
    mac                     username        hostname        ip              ssid            accessPointName
    -----------------       --------        --------        -------------   ----------      ---------------
    11:22:33:44:55:66       79012345678     Test_Client1    192.168.2.199   TestSSID1       Test_AP1
    AA:BB:CC:DD:EE:FF       79098765432     Test_Client2    192.168.2.200   TestSSID2       Test_AP2
    
  • Пример вывода команды show для клиента с MAC-адресом 11:22:33:44:55:66:

    $ python wfcli.py client show 11:22:33:44:55:66
    mac                     username        hostname        ip              ssid            accessPointName
    -----------------       --------        --------        -------------   ----------      ---------------
    11:22:33:44:55:66       79012345678     Test_Client1    192.168.2.199   TestSSID1       Test_AP1
    

Управление точками доступа (AP)

  • Команда: ap
  • Субкоманды: list, refresh, reboot

    • list: Показать список точек доступа с их MAC адресами, IP адресами, моделями и версиями ПО и т.д.
    • refresh <MAC>: Обновить конфигурацию точки доступа с заданным MAC-адресом (не выводит сообщений)
    • reboot <MAC>: Перезагрузить точку доступа с заданным MAC-адресом (не выводит сообщений)
  • Пример вывода команды list:

    $ python wfcli.py ap list
    mac                     version                                 ip              healthState
    -----------------       --------------------------------------  --------------- ----------------
    11:11:11:11:11:11       Fplus WF-AP-624M-IIC 0.54.0-9           10.20.30.100   Unavailable
    22:22:22:22:22:22       Fplus WF-AP-622L-IIC 0.54.0-6           10.20.30.101   AvailableSucceed
    33:33:33:33:33:33       Fplus WF-AP-624H-IIC 0.51.0-15          10.20.30.102   AvailableSucceed
    
  • No labels