Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2008 14:52:45

kostyasa
От:
Зарегистрирован: 2008-12-15
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

здравствуйте, пытаюсь из питона получить список включенных компьютеров в домене, но что-то ничего не выходит…

здесь на форуме нашел тему
http://python.su/forum/viewtopic.php?id=696
она мне не помогла (

вот мой код:

import win32wnet,win32netcon

PyHANDLE = win32wnet.WNetOpenEnum(win32netcon.RESOURCE_CONTEXT,win32netcon.RESOURCETYPE_ANY, 0, None)

for i in win32wnet.WNetEnumResource(PyHANDLE):
print i.lpRemoteName


загвоздка в количестве машин, их выводится тока 64, вот дока:
http://docs.activestate.com/activepython/2.4/pywin32/win32wnet__WNetEnumResource_meth.html
а у меня в домене их порядка 100

может кто-нибудь знает как обойти условие в 64 компутера?
спасибо за внимание



Офлайн

#2 Дек. 15, 2008 15:49:43

SageNS
От:
Зарегистрирован: 2008-10-19
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

копай в сторону win32com.client



Офлайн

#3 Дек. 15, 2008 16:06:31

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

Офлайн

#4 Дек. 15, 2008 16:41:45

kostyasa
От:
Зарегистрирован: 2008-12-15
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

SageNS
пробую копать во всех направлениях )

The gray Cardinal
спасибо, этот пример видел, он действительно дает полный список машин в домене, но даже тех, которые выключены, перебор при помощи подключения через wmi работает слишком долго, например мой пример за 1 секунду выдает 64 машины, через wmi за секунду обрабатывается тока один компутер

вобщем задача-то ставилась подготовить список компутеров, чтобы потом отдать его wmi, что ж будем копать в сторону win32com.client …

зыюю машин в домене 292, хорошо живем



Отредактировано (Дек. 15, 2008 16:43:57)

Офлайн

#5 Дек. 15, 2008 17:09:41

SageNS
От:
Зарегистрирован: 2008-10-19
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

у меня в домене 1500 тачек, выводит список примерно 2 секунды
при следующем коде

import win32com.client
GetObject = win32com.client.GetObject
object = GetObject("LDAP://DC=com/DC=test/OU=test")
object.Filter = ["Computer"]
for comp in object:
print comp.Name
Скрипт выводит список всех машинок в определенном OU



Офлайн

#6 Дек. 16, 2008 15:36:49

kostyasa
От:
Зарегистрирован: 2008-12-15
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

SageNS
спасибо, к сожалению ваш пример у меня не работает, при этом ругается именно на конструкцию
“LDAP://DC=..,DC=..”
будем искать дальше



Офлайн

#7 Дек. 16, 2008 16:49:46

SageNS
От:
Зарегистрирован: 2008-10-19
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

И что за ошибка выскакивает?



Офлайн

#8 Дек. 16, 2008 17:01:42

kostyasa
От:
Зарегистрирован: 2008-12-15
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

узнал у нашего сисадмина запрос к ldap, это dc=rdw,dc=local

пишу

ldap = win32com.client.GetObject('LDAP:')
ldap.GetObject('LDAP://dc=rdw,dc=local')

ругается на вторую строчку, т.е. подключение к ldap происходит, после обработки ошибки получаю следующее

com_error
<no args>
File “C:\JOB\Py\test.py”, line 22, in <module>
ldap.GetObject('LDAP://dc=rdw,dc=local')
/n File “<COMObject LDAP:>”, line 2, in GetObject

-2147352562
Недопустимое число параметров.
None
None

при этом GetObject, что в вашем примере можно заменить на OpenDSObject, результат один и тот же
:(



Отредактировано (Дек. 16, 2008 17:04:41)

Офлайн

#9 Дек. 16, 2008 17:42:47

SageNS
От:
Зарегистрирован: 2008-10-19
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

пишу

ldap = win32com.client.GetObject('LDAP:')
ldap.GetObject('LDAP://dc=rdw,dc=local')
Ругается потому, что не правильно используете функцию GetObject, почитать можно тут http://www.script-coding.info/Python/LDAP.html
Опять же код, который я дал с коментариями

import win32com.client
object = win32com.client.GetObject("LDAP://DC=com/DC=test/OU=test123") \\ создаем объект object с OU test123 на домен контролере test.com
object.Filter = ["Computer"] \\ применяем фильтр для объекта object оставляя в объекта только компьютеры
for comp in object: \\ "для каждого (новый объект) comp в объекте object"
print comp.Name \\ "вывести атрибут Name объекта comp"
Более детальных коментариев не писал никогда в жизни :)


строка GetObject = win32com.client.GetObject используется для удобства, т.е.
GetObject = win32com.client.GetObject
object = GetObject(“LDAP://DC=com/DC=test/OU=test”)
равносильно
object = win32com.client.GetObject(“LDAP://DC=com/DC=test/OU=test”)



Отредактировано (Дек. 16, 2008 17:47:01)

Офлайн

#10 Дек. 17, 2008 10:06:30

kostyasa
От:
Зарегистрирован: 2008-12-15
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

список работающих машин в домене

SageNS
спасибо за подробный комментарий =)
ссылку знаю и видел до этого

дело в том, что если применять в точности ваш код, то в трейсбеке появляется следующая фраза:
“Указанный домен не существует или к нему невозможно подключиться.”
что в принципе не совсем правильно, ибо подключиться к домену можно, заменив ‘LDAP://’ конструкцией ‘WinNT://’ или через модуль win32wnet; в случае ‘WinNT://’ в список попадают все машины (!) даже которых уже и быть не может в сети (их просто не вывели из домена), используя win32wnet мне видно тока 64 тачки которые действительно в сети, но этого мало…
видетели, если через обычный проводник или какой-нибудь там анрил командер я листаю сеть, то я вижу тока те машины, которые действительно сейчас работают, при этом я вижу их сразу (т.е. быстро) и причем все… собственно питон работает с теми же api функциями что и система, что и этот анрил командер, а получается все равно не то что надо, вот это обидно, честное слово =)
буду дальше канать сетевого администратора, что там и как настроено :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version