Я пытаюсь проанализировать выходные данные, в которых записи выровнены с помощью переменных пробелов. Вот рассматриваемый результат:
VLAN Table
VLAN VLAN Name Type Secure eth0 eth1 eth2 eth3 eth4
---- --------- ---- ------ ---- ---- ---- ---- ----
100 Port_1 Bridged Disable T U
200 Port_2 Bridged Disable T U
300 Port_3 Bridged Disable T U
400 Port_4 Bridged Disable T U
1249 AP_Mgmt Bridged Disable T
В частности, столбцы eth{0-4}. Я хотел бы сопоставить либо T, U, либо один пробел \s для каждого столбца eth{n}. Таким образом, желаемый результат будет выглядеть примерно так:
[['100', 'Port_1', 'Bridged', 'T', 'U ', ' ', ' ', ''], ['200', 'Port_2', 'Bridged', 'T', ' ', 'U', ' ', ' '], ['300', 'Port_3', 'Bridged', 'T', ' ', ' ', 'U', ' '], ['400', 'Port_4', 'Bridged', 'T', ' ', ' ', ' ', 'U'], ['1249', 'AP_Mgmt', 'Bridged', 'T', ' ', ' ', ' ', ' ']]
Также стоит отметить, что я планирую выполнить некоторую постобработку, чтобы нормализовать эти данные в классы данных Python или базовые модели. Просто нужен правильный статус тегов, чтобы соответствовать правильным столбцам порта.
Я попробовал сделать столбцы eth{0-4} их собственными обязательными значениями TextFSM со следующим регулярным выражением: ([TU\s]) и попытался сопоставить это значение на каждом седьмом пробеле между столбцами eth, как показано в шаблоне здесь:
Value Required vid (\d+)
Value Required vlan_name (\S+)
Value Required type (\S+)
Value Required eth0 ([TU\s])
Value Required eth1 ([TU\s])
Value Required eth2 ([TU\s])
Value Required eth3 ([TU\s])
Value Required eth4 ([TU\s])
Start
^\s*${vid}\s+${vlan_name}\s+${type}\s+\S+\s+${eth0}\s+${eth1}\s{7,}${eth2}\s{7,}${eth3}\s{7,}${eth4} -> Record
Текущий результат:
[['400', 'Port_4', 'Bridged', 'T', ' ', ' ', ' ', 'U']]
Подробнее здесь: https://stackoverflow.com/questions/798 ... -due-to-va
TextFSM анализирует выходные данные CLI, выровненные по столбцам, где необязательные столбцы смещаются из-за переменных ⇐ Python
Программы на Python
1767279210
Anonymous
Я пытаюсь проанализировать выходные данные, в которых записи выровнены с помощью переменных пробелов. Вот рассматриваемый результат:
VLAN Table
VLAN VLAN Name Type Secure eth0 eth1 eth2 eth3 eth4
---- --------- ---- ------ ---- ---- ---- ---- ----
100 Port_1 Bridged Disable T U
200 Port_2 Bridged Disable T U
300 Port_3 Bridged Disable T U
400 Port_4 Bridged Disable T U
1249 AP_Mgmt Bridged Disable T
В частности, столбцы eth{0-4}. Я хотел бы сопоставить либо T, U, либо один пробел \s для каждого столбца eth{n}. Таким образом, желаемый результат будет выглядеть примерно так:
[['100', 'Port_1', 'Bridged', 'T', 'U ', ' ', ' ', ''], ['200', 'Port_2', 'Bridged', 'T', ' ', 'U', ' ', ' '], ['300', 'Port_3', 'Bridged', 'T', ' ', ' ', 'U', ' '], ['400', 'Port_4', 'Bridged', 'T', ' ', ' ', ' ', 'U'], ['1249', 'AP_Mgmt', 'Bridged', 'T', ' ', ' ', ' ', ' ']]
Также стоит отметить, что я планирую выполнить некоторую постобработку, чтобы нормализовать эти данные в классы данных Python или базовые модели. Просто нужен правильный статус тегов, чтобы соответствовать правильным столбцам порта.
Я попробовал сделать столбцы eth{0-4} их собственными обязательными значениями TextFSM со следующим регулярным выражением: ([TU\s]) и попытался сопоставить это значение на каждом седьмом пробеле между столбцами eth, как показано в шаблоне здесь:
Value Required vid (\d+)
Value Required vlan_name (\S+)
Value Required type (\S+)
Value Required eth0 ([TU\s])
Value Required eth1 ([TU\s])
Value Required eth2 ([TU\s])
Value Required eth3 ([TU\s])
Value Required eth4 ([TU\s])
Start
^\s*${vid}\s+${vlan_name}\s+${type}\s+\S+\s+${eth0}\s+${eth1}\s{7,}${eth2}\s{7,}${eth3}\s{7,}${eth4} -> Record
Текущий результат:
[['400', 'Port_4', 'Bridged', 'T', ' ', ' ', ' ', 'U']]
Подробнее здесь: [url]https://stackoverflow.com/questions/79858423/textfsm-parsing-column-aligned-cli-output-where-optional-columns-shift-due-to-va[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия