Как найти и напечатать текст в паре ключ / значение в python - PullRequest
0 голосов
/ 24 мая 2019

У меня есть скрипт, который выполняет множество различных тестов для некоторого сетевого оборудования. Я хочу напечатать только неудачное сообщение из вывода. Ключ (show bgp summary) не постоянен, он может меняться. И может быть несколько полей для массажа, как в разделе «провал», так и в разделе «пропущено». Как я могу это сделать?

pprint(checkvalue.test_results)

Укажите этот вывод:

{'show bgp summary': [{'count': {'fail': 2, 'pass': 8},
                       'failed': [{'id': {'peer-address': '10.10.20.20'},
                                   'message': ' The BGP Neighbour 10.10.20.20 '
                                              "was in ['Established'], now "
                                              "it's ['Connect']",
                                   'post': {'peer-address': '10.10.20.20',
                                            'peer-state': ['Connect']},
                                   'post_node_value': ['Connect'],
                                   'pre': {'peer-state': ['Established']},
                                   'pre_node_value': ['Established']},
                                  {'id': {'peer-address': '10.10.10.10'},
                                   'message': ' The BGP Neighbour 10.10.10.10 '
                                              "was in ['Established'], now "
                                              "it's ['Connect']",
                                   'post': {'peer-address': '10.10.10.10',
                                            'peer-state': ['Connect']},
                                   'post_node_value': ['Connect'],
                                   'pre': {'peer-state': ['Established']},
                                   'pre_node_value': ['Established']}],
                       'node_name': 'peer-state',
                       'passed': [{'id': {'peer-address': '111.111.111.111'},
                                   'message': 'BGP State check',
                                   'post': {'peer-address': '111.111.111.111',
                                            'peer-state': ['Established']},
                                   'post_node_value': ['Established'],
                                   'pre': {'peer-state': ['Established']},
                                   'pre_node_value': ['Established']},
                                  {'id': {'peer-address': '0000:0000:0000:00:2'},
                                   'message': 'BGP State check',
                                   'post': {'peer-address': '0000:000:0000:00::2',
                                            'peer-state': ['Active']},
                                   'post_node_value': ['Active'],
                                   'pre': {'peer-state': ['Active']},
                                   'pre_node_value': ['Active']},
                       'result': False,
                       'test_name': 'BGP-peers-estab',
                       'testoperation': 'no-diff',
                       'xpath': 'bgp-peer'}]}

Я только хочу напечатать сообщение о неудачных тестах. Как это: 'Сосед BGP 10.10.10.10' "был в ['Установлен'], сейчас" "это ['Connect']"

1 Ответ

0 голосов
/ 24 мая 2019

Спасибо вам всем.Вы указываете мне в правильном направлении.Я могу достичь своих целей с помощью этого:

for testname, value in checkvalue.test_results.items():
    for i in checkvalue.test_results[testname][0]['failed']:
        print(i['message'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...