Извлеките выходные данные Juniper Devices и сохраните в файл словаря через netmiko python

Я запускаю свой скрипт, используя netmiko и ssh для устройства juniper. Сценарий запускает команды для получения информации об устройстве, такой как имя хоста, модель и т. д. Затем выходные данные сохраняются в словаре.

результат вывода на печать из кода получил слишком много места, и вывод неправильно сохраняется в словаре

Это результат вывода на печать из кода

Hostname: vcx.lab01

{master}

Model: t640

{master}

Junos: 15.1R7-S1

{master}

Как вы видите выше, между выводом первой команды и выводом второй команды много пробелов/промежутков, и каждая команда заканчивается {master}.

Ниже приведен выходной cli-in непосредственно с маршрутизатора Juniper.

[email protected]> show version | match Hostname
Hostname: vcx.lab01

{master}

[email protected]> show version | match Model
Model: t640

{master}

[email protected]> show version | match Junos:
Junos: 15.1R7-S1

{master}

Даже у меня возникают те же проблемы с пространством при запуске одних и тех же команд через маршрутизатор Juniper.

Таким образом, когда я сохраняю каждый вывод устройства можжевельника в свой словарь, он будет сохраняться, как показано ниже.

Hostname,Model,Version^M
"
Hostname: vcx.lab01

{master}","
Model: t640

{master}","
Junos: 15.1R7-S1

{master}"^M

Я хотел бы, чтобы вывод на печать был чистым, без пробелов и без {master}, как показано ниже.

Hostname: vcx.lab01
Model: t640
Version: 15.1R7-S1

и я хотел бы файл словаря, как показано ниже

Hostname,Model,Version
vcx.lab01,t640,15.1R7-S1

Мне очень нужна ваша помощь, чтобы посоветовать мне, что я могу сделать, чтобы преодолеть эту проблему, пожалуйста, помогите мне. Спасибо


person chenoi    schedule 28.01.2019    source источник
comment
Привет, все еще не повезло ... кто-нибудь может посоветовать дальше. Я не могу использовать PyEZ, так как устройства не поддерживают netconf, и, к сожалению, я не могу включить эти функции. Таким образом, единственным способом на данный момент является использование connection.send_command(). Получите и извлеките требуемые данные и попытайтесь сохранить их в dict. Спасибо   -  person chenoi    schedule 29.01.2019


Ответы (1)


Просто поделиться решением

Я использую re.sub() и нарезку строк и могу получать чистые данные построчно без пустого пространства и состояния {master}.

Спасибо. Я надеюсь, что это может помочь и другим.

person chenoi    schedule 30.01.2019