Форум сайта python.su
здравствуйте, пытаюсь из питона получить список включенных компьютеров в домене, но что-то ничего не выходит…
здесь на форуме нашел тему
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 компутера?
спасибо за внимание
Офлайн
копай в сторону win32com.client
Офлайн
Офлайн
SageNS
пробую копать во всех направлениях )
The gray Cardinal
спасибо, этот пример видел, он действительно дает полный список машин в домене, но даже тех, которые выключены, перебор при помощи подключения через wmi работает слишком долго, например мой пример за 1 секунду выдает 64 машины, через wmi за секунду обрабатывается тока один компутер
вобщем задача-то ставилась подготовить список компутеров, чтобы потом отдать его wmi, что ж будем копать в сторону win32com.client …
зыюю машин в домене 292, хорошо живем
Отредактировано (Дек. 15, 2008 16:43:57)
Офлайн
у меня в домене 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
Офлайн
SageNS
спасибо, к сожалению ваш пример у меня не работает, при этом ругается именно на конструкцию
“LDAP://DC=..,DC=..”
будем искать дальше
Офлайн
И что за ошибка выскакивает?
Офлайн
узнал у нашего сисадмина запрос к 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)
Офлайн
пишуРугается потому, что не правильно используете функцию GetObject, почитать можно тут http://www.script-coding.info/Python/LDAP.html
ldap = win32com.client.GetObject('LDAP:')
ldap.GetObject('LDAP://dc=rdw,dc=local')
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равносильно
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)
Офлайн
SageNS
спасибо за подробный комментарий =)
ссылку знаю и видел до этого
дело в том, что если применять в точности ваш код, то в трейсбеке появляется следующая фраза:
“Указанный домен не существует или к нему невозможно подключиться.”
что в принципе не совсем правильно, ибо подключиться к домену можно, заменив ‘LDAP://’ конструкцией ‘WinNT://’ или через модуль win32wnet; в случае ‘WinNT://’ в список попадают все машины (!) даже которых уже и быть не может в сети (их просто не вывели из домена), используя win32wnet мне видно тока 64 тачки которые действительно в сети, но этого мало…
видетели, если через обычный проводник или какой-нибудь там анрил командер я листаю сеть, то я вижу тока те машины, которые действительно сейчас работают, при этом я вижу их сразу (т.е. быстро) и причем все… собственно питон работает с теми же api функциями что и система, что и этот анрил командер, а получается все равно не то что надо, вот это обидно, честное слово =)
буду дальше канать сетевого администратора, что там и как настроено :)
Офлайн