Знайдено на живому ZTE C320. Вхід чекає «Username:» з дедлайном читання у дві секунди, а дедлайн сокета липкий: він лишався на всі наступні читання. Наслідок подвійний. Довгий конфіг обривався на середині помилкою «read tcp: i/o timeout» — мережевою там, де мережа ні до чого. А коли ще й запрошення не збігалось зі зразком, той самий дедлайн спрацьовував раніше за власний таймер, і замість «не дочекались запрошення» людина бачила ту саму мережеву помилку. Щоб це побачити, довелося спершу полагодити діагностику: стенограма починалась після входу, тобто після того місця, де все зупинялось. Тепер розмова входу пишеться теж — без пароля, лише те, що надіслав пристрій. Плюс вбудований профіль zte-zxan: наявні профілі ZTE чекають «>» або «]», а OLT показує «ZXAN#». Окремий профіль, бо в Comware трапляються рядки з самої решітки, і зразок із «#» обірвав би їхній конфіг. Результат на живому C320: 26 555 рядків. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
24 lines
1.4 KiB
SQL
24 lines
1.4 KiB
SQL
-- =====================================================================
|
||
-- NetPulse :: 0028_zte_zxan_profile.sql
|
||
-- Профіль збору для ZTE ZXAN (OLT серій C300/C320/C600).
|
||
--
|
||
-- Наявні профілі ZTE описують ZXR10 і ZXDSL: у них запрошення
|
||
-- закінчується на «>» або «]», як у Comware. ZXAN після входу показує
|
||
-- «ZXAN#», і жоден із них не підходить — збір зупинявся, не дочекавшись
|
||
-- запрошення.
|
||
--
|
||
-- Окремий профіль, а не «#» у наявні: у виводі Comware трапляються
|
||
-- рядки з самої лише решітки як роздільники, і зразок, що приймає «#»
|
||
-- у кінці рядка, обірвав би конфіг на першому ж такому.
|
||
--
|
||
-- Перевірено на живому C320: 26 555 рядків конфігу.
|
||
-- =====================================================================
|
||
|
||
INSERT INTO ncm.profiles (tenant_id, key, name, vendor, transport,
|
||
commands, prompt_regex, enable_required, is_builtin)
|
||
VALUES (
|
||
NULL, 'zte-zxan', 'ZTE ZXAN (OLT C300/C320/C600)', 'ZTE', 'telnet',
|
||
'["terminal length 0", "show running-config"]'::jsonb,
|
||
'[#>]\s*$', false, true
|
||
)
|
||
ON CONFLICT DO NOTHING;
|