Асинхронная утилита на базе Python3 для диагностики, автоопределения, регистрации и активного управления абонентскими терминалами (ONU) на OLT-коммутаторах ZTE C300 и ZTE C600, а также портами коммутаторов доступа IPoE.
- Параллельный опрос сети OLT: Высокоскоростной одновременный сбор списка незарегистрированных (unconfigured) ONU по всему пулу OLT-коммутаторов с использованием асинхронного ввода-вывода (
asyncio). - Интеллектуальный трекинг неконфигурированных устройств: Разделение неконфигурированных ONU на новые и давно висящие на основе встроенного SQLite-хранилища.
-u(--uncfg) выводит только новые устройства, появившиеся в сети менее 24 часов назад.--uncfg-oldвыводит устройства, висящие без регистрации более 24 часов, отображая дату их первого обнаружения и последний привязанный к ним договор.
- Самообучающийся кэш договоров: При выполнении обычной диагностики абонента (
-g) или регистрации новой ONU (-r) утилита автоматически сохраняет связкуСерийный номер -> Договорв локальную базу данных. - Автоопределение положения ONU (Auto-Discovery): Поиск OLT-коммутатора и конкретного физического PON-порта, на котором зарегистрирован или ожидает регистрации абонент.
- Глубокая диагностика: Сбор уровней PON-сигналов (Tx/Rx), линков Ethernet-порта, прокачки трафика, IP/MAC-адресов абонентского оборудования и истории аварий за одну сессию.
- Интеллектуальная быстрая регистрация (
-r/--reg): Упрощенная регистрация для инженеров L1. Скрипт автоматически определяет OLT, порт, свободный номер ONU (1..128) и целевой VLAN. Поддерживает короткие однобуквенные флаги и быструю регистрацию без флагов. - Удаленное управление:
- Удаленная OMCI-перезагрузка ONU (
--reboot). - Полная деконфигурация (удаление) ONU с интерфейса OLT (
--remove).
- Удаленная OMCI-перезагрузка ONU (
- Диагностика порта абонента: Сбор данных о состоянии физического линка (Up/Down, скорость), уровне текущей утилизации полосы (Input/Output в %), количестве MAC-адресов на порту, привязках IP по DHCP Relay и системных логах коммутатора.
- Счетчики ошибок: Вывод в реальном времени количества ошибок на приеме (
InMACRcvErr) и контрольных сумм (CrcError). - Интеллектуальная аналитика:
- Детекция кабельных повреждений (CRC-ошибки).
- Определение ситуаций, когда абонент воткнул кабель провайдера в LAN-порт своего роутера вместо WAN.
- Детекция финансовой блокировки по диапазону полученного IP-адреса.
- Управление портом (
--reboot): Удаленный перезапуск порта, сброс защиты MAC Protect и обнуление счетчиков ошибок на порту.
- Python 3.8+
- Зависимости отсутствуют (утилита построена исключительно на стандартной библиотеке Python, для базы данных используется встроенный модуль
sqlite3).
- Клонируйте репозиторий:
git clone https://github.com/ZephronixQ/NetDiag.git cd NetDiag - Создайте файл
config.pyи заполните массивOLT_DEVICESпараметрами ваших коммутаторов.
python main.py -hПоиск новых незарегистрированных ONU (до 24 часов на портах)
python main.py -uПоиск давно висящих незарегистрированных ONU (более 24 часов на портах)
python main.py --uncfg-oldЗапуск диагностики абонента
python main.py -g XPON57000562Удаленная перезагрузка ONU
python main.py -g XPON57000562 --rebootУдаление конфигурации ONU с порта OLT
python main.py -g XPON57000562 --removeБыстрая регистрация новой ONU (для первой линии L1)
Вариант А: Быстрый ввод без флагов (Серийник + Договор + Порт)
python main.py -r XPON57001520 10022870 4Вариант Б: Регистрация с авто-выбором свободного порта (Серийник + Договор)
python main.py -r XPON57001520 10022870Вариант В: С явными флагами (если нужно переопределить VLAN или интерфейс)
python main.py -r XPON57001520 -i 10022870 -p 4 -v 1916Диагностика порта абонента
python main.py --ipoe 192.168.6.200 2Сброс ошибок, блокировки MAC Protect и перезагрузка порта
python main.py --ipoe 192.168.6.200 2 --reboot