首页 > 解决方案 > Netmiko send_config_set - 解析响应 - 检测错误?

问题描述

我正在使用 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 出现一些错误时,它们似乎总是以% Invalidor% Access或类似以 % 开头的东西开头 - 所以我想知道这是否足以让我搜索这些输出然后设置遇到一个标志自己显示错误?也许我可以构建一个字符串列表以在输出中查找?

虽然,我不相信这一切都是可靠的,并且很想听听其他人对最佳方式的意见。

标签: pythonerror-handlingnetwork-programmingcisco-ios

解决方案


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 的包装器,也许您也应该这样做。


推荐阅读