Python如何根据失败的命令做出决定(netmiko 和 try-except-else)

Python 作者:当下软件园 2023-08-21 00:25:45

我正在尝试创建一个测试程序,该程序将登录 Cisco ASA 防火墙并收集一些数据。 我遇到了挑战。有些防火墙是单上下文的,有些是多上下文的,但是通过管理 IP 地址连接到所有防火墙。一旦连接,就会有一个命令“changeto system”,它只会在多上下文防火墙上成功。我正在考虑使用 try-except-else ....

   conn = ConnectHandler(device_type= "cisco_asa", ip=host[1],  username=u[host[3]], password=p[host[3]], secret=p[host[3]])    print(conn.find_prompt())    try:        output4 = conn.send_command(cmd_system)    except:        # not a multi-context firewall        for cmd in cmd_list_asa:                CONTEXT_OUTPUT = open(chgnr + '__' + host[0] + '_' + d[cmd]+ '_' + testtype , "a")                info = ("running .... " + host[0] + "......." + cmd)                runcommand(info, cmd, CONTEXT_OUTPUT)                CONTEXT_OUTPUT.close()    else:        #multi-context firewall        #collect SYSTEM context data        for cmd in cmd_list_asa:                CONTEXT_OUTPUT = open(chgnr + '__' + host[0] + '_system_' + d[cmd]+ '_' + testtype , "a")                info = ("running .... " + host[0] + "_system......." + cmd)                runcommand(info, cmd, CONTEXT_OUTPUT)                CONTEXT_OUTPUT.close()        #create context list and collect data        output3 = conn.send_command(cmd_contextlist)        list = re.findall("\"(.*?)\"",output3)        for fw in list:            cmd_change = ("changeto context " + fw)            output = conn.send_command(cmd_change)            for cmd in cmd_list_asa:                CONTEXT_OUTPUT = open(chgnr + '__' + host[0] + '_' + fw + '__' + d[cmd]+ '_' + testtype , "a")                info = ("running .... " + host[0] + "_" + fw + "......." + cmd)                runcommand(info, cmd, CONTEXT_OUTPUT)                CONTEXT_OUTPUT.close()

CONTEXT_OUTPUT 只是一种动态生成文件名的奇特方式。 测试类型来区分多次运行以及最后所有runcommand发送命令...conn.send_command(cmd)。

按照我的预期,如果 output4 命令失败,应该执行 except 部分,如果成功则应该跳转到 else 部分,但显然即使那些不是多上下文的防火墙也会通过 else 部分并跳过 except。

关注公众号:拾黑(shiheibook)了解更多

友情链接:

下软件就上简单下载站:https://www.jdsec.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接