TextFSM анализирует выходные данные CLI, выровненные по столбцам, где необязательные столбцы смещаются из-за переменных Python

Программы на Python
Ответить
Anonymous
 TextFSM анализирует выходные данные CLI, выровненные по столбцам, где необязательные столбцы смещаются из-за переменных

Сообщение 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']]


Подробнее здесь: https://stackoverflow.com/questions/798 ... -due-to-va
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»