wmi python モジュールを使用して、特定のプログラムの IP アドレス (ips.txt) のリストをチェックする python スクリプトを作成中または作成しようとしています。ただし、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