Python捕获运行时错误类型

2024-06-02 04:49:40 发布

您现在位置:Python中文网/ 问答频道 /正文

喜欢捕捉错误,如果出现错误,做点什么

通过snmpandler包获取网络操作系统类型的Python代码。它可以工作,但是如果SNMP没有查询请求,它将超时。我想捕捉它并打印“无SNMP活动”

from nelsnmp.snmp import SnmpHandler
from nelsnmp.errors import ArgumentError, SnmpError
def findnetOS(host):
    dev = SnmpHandler(host=host, version='2c', community='public')
    hostinfo = HostInfo(dev)
    osversion = hostinfo.get_version()
    try:
       os = hostinfo.os
    except ArgumentError as e:
       if e.__str__() == "No valid SNMP version defined":
          os = None
          return os
    else:
       return os

ostype = findnetOS(host)
if ostype != None:
   ostype = "cisco_"+ostype
   print ostype
else:
   print "No SNMP Active"
   exit(-1)

出现错误时,预期输出应为“无SNMP活动”,并在运行时无错误地打印ostype

我得到的错误是:

  File "/usr/lib/python2.7/site-packages/nelsnmp/snmp.py", line 210, in _raise_error
    raise ErrorType(error_data)
nelsnmp.errors.SnmpError: No SNMP response received before timeout

谢谢你的意见


Tags: nofromimporthostosversion错误snmp
1条回答
网友
1楼 · 发布于 2024-06-02 04:49:40

做你为ArgumentError做的同样的事情

from nelsnmp.snmp import SnmpHandler
from nelsnmp.errors import ArgumentError, SnmpError
def findnetOS(host):
    try:
        dev = SnmpHandler(host=host, version='2c', community='public')
        hostinfo = HostInfo(dev)
        osversion = hostinfo.get_version()
    except SnmpError as e:
       # handle your error here
       pass
    try:
       os = hostinfo.os
    except ArgumentError as e:
       if e.__str__() == "No valid SNMP version defined":
          os = None
          return os
    else:
       return os

ostype = findnetOS(host)
if ostype != None:
   ostype = "cisco_"+ostype
   print ostype
else:
   print "No SNMP Active"
   exit(-1)

相关问题 更多 >