Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 20 additions & 5 deletions wmi_client_wrapper/wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,26 @@ class WmiClientWrapper(object):
it directly to end-users.
"""

def __init__(self, username="Administrator", password=None, host=None, namespace='//./root/cimv2', delimiter="\01"):
def __init__(self,
username="Administrator",
password=None,
host=None,
namespace='//./root/cimv2',
delimiter="\01",
force_ntlm_v2=False):
assert username
assert password
assert host # assume host is up
assert host # assume host is up

# store the credentials for later
self.username = username
self.password = password
self.host = host
self.force_ntlm_v2 = force_ntlm_v2

self.delimiter = delimiter
self.namespace = namespace

def _make_credential_args(self):
"""
Makes credentials that get passed to wmic. This assembles a list of
Expand All @@ -54,15 +61,23 @@ def _make_credential_args(self):
arguments.append(hostaddr)
# the format for namespace
space= "--namespace={namespace}".format(namespace=self.namespace)

arguments.append(space)
return arguments

def _setup_params(self):
"""
Makes extra configuration that gets passed to wmic.
"""
return ["--delimiter={delimiter}".format(delimiter=self.delimiter)]

params = []

if (self.force_ntlm_v2):
params.append('--option=client ntlmv2 auth=Yes')

params.append("--delimiter={delimiter}".format(delimiter=self.delimiter))

return params

def _construct_query(self, klass):
"""
Expand Down