Files

79 lines
2.3 KiB
Python
Raw Permalink Normal View History

2019-02-16 00:16:52 +01:00
###########################################################################
#
# This program is part of Zenoss Core, an open source monitoring platform.
# Copyright (C) 2008-2010, Zenoss Inc.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2, or (at your
# option) any later version, as published by the Free Software Foundation.
#
# For complete information please visit: http://www.zenoss.com/oss/
#
###########################################################################
from ctypes import *
from pysamba.twisted.reactor import reactor, eventContext
from pysamba.library import *
from pysamba.wbem.wbem import *
from pysamba.wbem.Query import Query
from pysamba.twisted.callback import WMIFailure
import sys
import logging
log = logging.getLogger('p.t.wmic')
import Globals
from Products.ZenUtils.Driver import drive, driveLater
from twisted.internet import defer
def doOneDevice(creds, query, hostname):
def inner(driver):
try:
q = Query()
yield q.connect(eventContext, hostname, creds)
driver.next()
log.info("Query sent")
yield q.query(query)
result = driver.next()
class_name = ''
while 1:
yield result.fetchSome()
if not driver.next(): break
for obj in driver.next():
props = [p for p in obj.__dict__.keys()
if not p.startswith('_')]
if obj._class_name != class_name:
class_name = obj._class_name
print obj._class_name
print repr(props)
print repr([getattr(obj, p) for p in props])
q.close()
except Exception, ex:
log.exception(ex)
return driveLater(0.25, inner)
def main():
logging.basicConfig()
log = logging.getLogger()
log.setLevel(10)
DEBUGLEVEL.value = 99
creds, query = sys.argv[1:3]
hosts = sys.argv[3:]
def stop(result):
print result
reactor.stop()
def later():
d = defer.DeferredList(
[doOneDevice(creds, query, h) for h in hosts]
)
d.addBoth(stop)
reactor.callLater(1, later)
reactor.run()
sys.exit(main())