Найти - Пользователи
Полная версия: WMI - подключение с явной авторизацией
Начало » Python для экспертов » WMI - подключение с явной авторизацией
1
Ace
Добрый !

Инструменты - Vista SP2 x86, python 3.2.3 и 2.7, pywin32-217, python WMI 1.4.9
Подскажите плз, как подключиться к WMI на постороннем домене, как явно указать юзера и домен ?

На VBS сделано и работает как написано
http://msdn.microsoft.com/en-us/library/windows/desktop/aa393720(v=vs.85).aspx

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = objSWbemLocator.ConnectServer("10.10.10.5", "Root\cimv2", "user", "P@ssw0rd", ,"NTLMDomain:office.local")

Пробую написать то же на Python

objSWbemLocator = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"office\user", r"P@ssw0rd")

Вариант
objSWbemLocator = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"user", r"P@ssw0rd",,"NTLMDomain:office.local")
также не проходит, питон такой пустой параметр не берет


Пока не нашел , какие параметры и в каком порядке передаются в ConnectServer в питоне
reclosedev
Ace
Пока не нашел , какие параметры и в каком порядке передаются в ConnectServer в питоне
В таком же как в VBS. Опциональные аргументы - это то же самое, что kwargs в Python.
Так должно заработать (проверить не могу):
objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"user", r"P@ssw0rd", strAuthority="NTLMDomain:office.local")
Ace
Не получилось

ИМХО это ? Взято из wmi.py
server = Dispatch ("WbemScripting.SWbemLocator").\
    ConnectServer (
      server,
      namespace,
      user,
      password,
      locale,
      authority,
      security_flags,
      named_value_set
    )

Пишет, что отказано в доступе. ИМХО вопрос в параметрах после четвертого.
Извините , как пропустить необязательный параметр в функции? чтобы “locale” пропустить ?
ЗЫ RDP на сервер есть, аккаунт в порядке
reclosedev
Ace
Не получилось
Какая ошибка?

А если пустую строку передать или None?
Ace
Ошибка

pywintypes.com_error: (-2147352567, 'Ошибка.', (0, 'SWbemLocator', 'Отказано в д
оступе. ', None, 0, -2147024891), None)

Варианты

objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"user", r"P@ssw0rd",,"NTLMDomain:office.local")
objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"user", r"P@ssw0rd","","NTLMDomain:office.local")
objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"user", r"P@ssw0rd",None,"NTLMDomain:office.local")

Завершаются с этой же ошибкой
Ace
Верный код

objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"office\user", 
r"P@ssw0rd")

либо

objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"user", 
r"P@ssw0rd","",r"NTLNDomain:office.local")

Этот - НЕ верный. Тут None не “переваривается” в качестве параметра

objWMIServiceRemote = objSWbemLocator.ConnectServer(r"10.10.10.5", r"Root\cimv2", r"user", 
r"P@ssw0rd",None,r"NTLNDomain:office.local")

Проблема оказалась в другом. Юзер не админ и ему хватало прав на получение доступа через WMI.
Описание тут:

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/wmi_add_user_or_group.mspx?mfr=true

Благодарю, кто не прошел мимо


This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB