Уведомления

Группа в Telegram: @pythonsu

#1 Июль 31, 2007 17:12:15

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и Active Directory

Скажем у меня есть компы, имена которых можно получить следующим образом:

new =
for i in range (3):
new.append (i)
new =
for j in range (3):
pc = “pc-%d-%d” % (i, j) #Имя компа
new .append (pc)

Чтобы удобнее было разбить на потоки, я сделал вложенные списки.



Отредактировано (Июль 31, 2007 17:26:25)

Офлайн

#2 Авг. 1, 2007 14:15:11

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Python и Active Directory

У меня - работает. Что-то странное.



Офлайн

#3 Авг. 1, 2007 17:51:26

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и Active Directory

Андрей Светлов
У меня - работает. Что-то странное.
Мистика какая-то, перезагрузил машину и все заработало. Спасибо огромное. А можно вопрос, почему мы при передаче параметров функции после первого параметра ставим запятую? Я про эту строку:

whoIs = threading.Thread (target = loggedOn, name = s, args = (new , ))



Отредактировано (Авг. 1, 2007 17:52:12)

Офлайн

#4 Авг. 1, 2007 19:12:35

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Python и Active Directory

Это - просто.
args подставляется в target как target(*args)
То есть трактуется как tuple.
Список разваливается на аргументы.
Когда пишешь (a,) - это tuple из одного аргумента. Соответственно - один параметр в функции.

Знаешь, как интерпретируется
def f(a, b, c, *args, **kwargs):
pass

и

f(1,'a', , *a, **kw)

?



Отредактировано (Авг. 2, 2007 00:20:18)

Офлайн

#5 Авг. 5, 2007 20:30:52

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и Active Directory

Андрей Светлов
Это - просто.
args подставляется в target как target(*args)
То есть трактуется как tuple.
Список разваливается на аргументы.
Когда пишешь (a,) - это tuple из одного аргумента. Соответственно - один параметр в функции.

Знаешь, как интерпретируется
def f(a, b, c, *args, **kwargs):
pass

и

f(1,'a', , *a, **kw)

?
Ага, понял, не дочитал, что параметры передаются, как кортеж. Спасибо.



Офлайн

#6 Окт. 16, 2007 14:18:08

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и Active Directory

привет, у меня появилась следующая задача: пробежаться по всем пользователям в определенной оушке (учитывая её подкаталоги), и соответсвенно полю “Display name” загнать значение в поле “Pager” на вкладке “Telephones”. По оушке я пробегаю следующим макаром:
import pythoncom
import re
import win32com.client

domainArr = {}
startingPoint = “DC=lan/DC=local/OU=myou”

def domainGrab (startingPoint, level):
global domainArr
reg = re.compile (r“CN=(?P<need>.*)”)
adsi = win32com.client.GetObject(“LDAP://” + startingPoint)
for entry in adsi:
if (entry.Class == “user”):
tmp = reg.match (entry.Name)
name = tmp.group (“need”)
domainArr = startingPoint
domainGrab (startingPoint + ‘/’ + entry.Name.replace('/', ‘\\/’), level + 1)

Вот, а как мне получить значение поля “Display name” и загнать значение в поле “Pager” на вкладке “Telephones”? Есть идеи?



Отредактировано (Окт. 16, 2007 14:18:41)

Офлайн

#7 Окт. 18, 2007 11:23:17

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

Python и Active Directory

well
привет, у меня появилась следующая задача: пробежаться по всем пользователям в определенной оушке (учитывая её подкаталоги), и соответсвенно полю “Display name” загнать значение в поле “Pager” на вкладке “Telephones”. По оушке я пробегаю следующим макаром:
import pythoncom
import re
import win32com.client

domainArr = {}
startingPoint = “DC=lan/DC=local/OU=myou”

def domainGrab (startingPoint, level):
global domainArr
reg = re.compile (r“CN=(?P<need>.*)”)
adsi = win32com.client.GetObject(“LDAP://” + startingPoint)
for entry in adsi:
if (entry.Class == “user”):
tmp = reg.match (entry.Name)
name = tmp.group (“need”)
domainArr = startingPoint
domainGrab (startingPoint + ‘/’ + entry.Name.replace('/', ‘\\/’), level + 1)

Вот, а как мне получить значение поля “Display name” и загнать значение в поле “Pager” на вкладке “Telephones”? Есть идеи?
Задача, оказывается, решается просто.Считываем значения:

path = “LDAP://DC=lan/DC=local/OU=myou/CN=test_user”
GetObject = win32com.client.GetObject
obj = GetObject(path)
print obj.DisplayName

Заносим значения:

path = “LDAP://DC=lan/DC=local/OU=myou/CN=test_user”
GetObject = win32com.client.GetObject
obj = GetObject(path)
obj.Pager = “911”
obj.SetInfo ()



Отредактировано (Окт. 19, 2007 17:14:39)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version