Netmiko send_config_set - анализ ответа - обнаружение ошибок? - PullRequest
0 голосов
/ 31 октября 2019

Я использую библиотеку Netmiko для подключения к устройствам и отправки новых команд конфигурации с помощью метода "send_config_set". В настоящее время я делаю это только на устройствах Cisco IOS. Но я делаю что-то, что позволит пользователю вводить любые команды (за некоторыми исключениями), и поэтому я пытаюсь понять, как интерпретировать полученный результат.

Как я понимаю, Netmiko в настоящее время возвращает только необработанныевыход. Но что было бы полезно для меня, это определить, что-то пошло не так во время выполнения этих команд - может быть, как логический флаг?

Например, допустим, я делаю это:

send_config_set(['abcd'])

Ответ, который я получил бы:

config term
Enter configuration commands, one per line.  End with CNTL/Z.
switch(config)#abcd
                ^
% Invalid input detected at '^' marker.

switch(config)#end
switch#

Ясно, что в этом случае произошла ошибка, так как команда была недействительной. Но Netmiko не может сказать мне об этом, просто выдает результат, и я думаю, хочет, чтобы я принял решение.

Я не сетевой инженер, поэтому я не знаю, какие могут быть возможные ошибки(т. е. что искать в ответе), я также не знаю всех команд, которые пользователь попробует, поэтому не могу объяснить все.

Что я заметил, так это когда Cisco IOS, кажется, имеет некоторыеошибки, они, кажется, всегда начинаются с % Invalid или % Access или чего-то подобного, начинающегося с% - поэтому я задаюсь вопросом, достаточно ли этого для меня, чтобы найти выходные данные для них, а затем сам установить флаг, чтобы показатьошибка обнаружена? Может быть, я могу составить список строк, которые нужно искать в выходных данных?

Хотя я не уверен, что это все настолько надежно, и мне хотелось бы услышать мнение других о том, как лучше всего это сделать.

1 Ответ

1 голос
/ 07 ноября 2019

Netmiko - это библиотека для скрининга экрана;он соскребает текст с экрана и отправляет его вам.

То, что вы описываете, является именно той причиной, по которой интерфейсы API (например, NETCONF) превосходят интерфейсы очистки экрана.

Это правда, что сообщения Cisco IOS, которые появляются при применении конфигурацииКоманде предшествует%, но не все они являются ошибками. Например:

Switch(config-if)#spanning-tree portfast
%Warning: portfast should only be enabled on ports connected to a single host.
 Connecting hubs, concentrators, switches,  bridges, etc.to this interface
 when portfast is enabled, can cause temporary spanning tree loops.
 Use with CAUTION

По этой причине Netmiko просто передает сообщение пользователю, чтобы он мог предпринять действия на основе этого сообщения. Поскольку вы также, похоже, создаете какую-то оболочку вокруг Netmiko, возможно, вам следует сделать то же самое.

...