python - Netmiko send_config_set - 解析响应 - 检测错误?

标签 python error-handling network-programming cisco-ios

我正在使用 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/

相关文章:

javascript - Django 制作按钮 Ajax

python - 断言 __debug__ == False 时断言

javascript - nodejs 将行号添加到基于 winston 的记录器

c - 查找以太网 header 的下一跳 MAC 地址

java - 无法使用 java InetAddress 找到主机,但可以使用 curl 找到主机

python - 从 pyaudio-stream 获取音频样本作为 float

python - 将 python 中的字符串向后分成两部分

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

error-handling - 在 Rust : concating results on Ok 中编写错误

mysql - Docker MySQL 容器从网关地址而不是源容器传入连接