Найти - Пользователи
Полная версия: список работающих машин в домене
Начало » Network » список работающих машин в домене
1 2
kostyasa
здравствуйте, пытаюсь из питона получить список включенных компьютеров в домене, но что-то ничего не выходит…

здесь на форуме нашел тему
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 компутера?
спасибо за внимание
SageNS
копай в сторону win32com.client
The gray Cardinal
http://forum.script-coding.info/viewtopic.php?id=500
kostyasa
SageNS
пробую копать во всех направлениях )

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

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

зыюю машин в домене 292, хорошо живем
SageNS
у меня в домене 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
kostyasa
SageNS
спасибо, к сожалению ваш пример у меня не работает, при этом ругается именно на конструкцию
“LDAP://DC=..,DC=..”
будем искать дальше
SageNS
И что за ошибка выскакивает?
kostyasa
узнал у нашего сисадмина запрос к 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, результат один и тот же
:(
SageNS
пишу

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”)
kostyasa
SageNS
спасибо за подробный комментарий =)
ссылку знаю и видел до этого

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