我正在使用 Netmiko 库连接到设备并通过“send_config_set”方法发送新的配置命令。目前,我只在 Cisco IOS 设备上执行此操作。但是我正在做一些允许用户输入任何命令(有一些异常(exception))的东西,所以我试图了解如何解释我得到的输出。
据我了解,Netmiko 目前只返回原始输出。但是对我有用的是确定在执行这些命令期间是否出现问题 - 可能就像一个 bool 标志?
例如,假设我这样做:
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
或以 % 开头的类似内容 - 所以我想知道这是否足以让我在输出中搜索这些内容,然后自己设置一个标志以显示遇到错误?也许我可以构建一个字符串列表以在输出中查找?虽然,我不相信这一切都是可靠的,并且很想听听其他人对最佳方式的意见。
最佳答案
Netmiko 是一个“屏幕抓取”库;它会从屏幕上刮下文本并将它们发送给您。
您所描述的正是 API 接口(interface)(如 NETCONF)优于屏幕抓取接口(interface)的原因。
应用配置命令时出现的 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 的包装器,也许您也应该这样做。
关于python - Netmiko send_config_set - 解析响应 - 检测错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58642676/