网络人是 Python 和编程新手,发现这个 ciscoconfparse 库看起来有一些非常有用的特性。我遇到了一个问题,我确定这是一些基本的问题,但还没有弄清楚。我正在尝试从路由器中提取 snmp 配置以创建配置集以删除 v2 配置。使用 netmiko 获取“show run | in snmp”的输出,然后解析它。返回的配置显示为一行。当使用 ciscoconfparse 语句删除一些行时,它会删除所有内容(假设因为它只有一行),所以我没有什么要构建的了。
在所有在线示例中,示例配置看起来像这样,并且功能工作因为它是多行的。
conf=[
'access-list dmz_inbound extended deny udp object training-network any4 eq snmp',
'snmp-server host inside 10.10.10.10 poll community ***** version 2c',
'snmp-server host inside 10.20.20.20 poll community ***** version 2c',
'no snmp-server location',
'no snmp-server contact',
'snmp-server community *****',
'!'
]
当我实际从路由器中提取配置时,它看起来像这样带有换行符,但被解析为 1 行:
'access-list testNada extended permit udp host 10.10.10.10 eq snmp host 10.20.10.10 eq snmp \nsnmp-server host inside 10.11.11.11 community ***** version 2c\nsnmp-server host inside 10.5.5.5 poll community ***** version 2c\nno snmp-server location\nno snmp-server contact\nsnmp-server community *****\n']
我正在运行的代码片段。删除行语句删除整个配置片段,而不仅仅是与 arg 匹配的行。
conf = [ssh.send_command("show run | include snmp")]
parse = CiscoConfParse(conf)
parse.delete_lines('no snmp-server')
parse.delete_lines('access-list')
newConf = (parse.replace_lines('snmp', 'no snmp',excludespec='v3'))
ssh.send_config_set(newConf)
如何直接从路由器中提取配置以显示为多行,以便我可以使用 ciscoconfparse 函数?