我正在构建或尝试构建一个python脚本,该脚本使用wmi python模块检查特定程序的ip地址列表(ips.txt)。但是,无论我如何处理没有运行RPC服务的资产上的异常,脚本都会停止运行错误。我使用的是python 2.7.5
我可以抓住并传递错误以继续吗? 我是否可以捕获错误并打印或返回ip未处于活动状态或rpc未运行的注释?
提前谢谢
这是我的代码:
import wmi
list = open("ips.txt")
for line in list.readlines():
asset = line.strip('\n')
c = wmi.WMI(asset)
try:
for process in c.Win32_Process (name="SbClientManager.exe"):
print asset, process.ProcessId, process.Name
except Exception:
pass
我已尝试以多种方式处理异常以继续解析我的列表,但脚本继续出错,并带有以下内容:
Traceback (most recent call last):
File ".\check_service.py", line 12, in <module>
c = wmi.WMI(asset)
File "C:\Python27\lib\site-packages\wmi.py", line 1290, in connect
handle_com_error ()
File "C:\Python27\lib\site-packages\wmi.py", line 241, in handle_com_error
raise klass (com_error=err)
wmi.x_wmi: <x_wmi: Unexpected COM Error (-2147023174, 'The RPC server is unavailable.', None, None)>
最终,我只是想继续编写脚本并发现错误。也许说明IP没有响应的说明会有所帮助。以下是我尝试的例外示例:
except Exception:
sys.exc_clear()
except:
pass
except wmi.x_wmi, x:
pass
答案 0 :(得分:3)
您粘贴的追溯表示错误位于c = wmi.WMI(asset)
行。您需要将该行放在try
块中。
像这样:
import wmi
list = open("ips.txt")
bad_assets = []
for line in list.readlines():
asset = line.strip('\n')
try:
c = wmi.WMI(asset)
for process in c.Win32_Process (name="SbClientManager.exe"):
print asset, process.ProcessId, process.Name
except Exception:
bad_assets.append(asset)
此外,建议尝试捕获正确的异常。