pyad - Получить имя пользователя с адреса электронной почты
Я пытаюсь получить список имен пользователей, используя список писем в pyad. Я знаю, что могу получать электронные письма от имен пользователей:
user = aduser.ADUser.from_cn('username').mail
Но мне было интересно, есть ли способ сделать обратное.
2 ответа
Я знаю, что уже слишком поздно отвечать в этой теме, но это может помочь другим, кто ищет такое решение..
Вы можете использовать предложение where с определенным условием, как показано ниже, для получения требуемых значений атрибутов.
Обратите внимание:- вам необходимо указать нужные вам атрибуты в списке атрибутов
attributes=["employeeID", "username"]
как указано выше, чтобы получить желаемые атрибуты на выходе.
import pyad.adquery
q = pyad.adquery.ADQuery()
user_email_id = 'emailID@company.com'
q.execute_query(
attributes=["employeeID", "username"],
where_clause="userPrincipalName = '{}'".format(user_email_id),
base_dn="OU=*****,OU=*****,DC=****,DC=*****,DC=*****"
)
for row in q.get_results():
print(row.get('username'))
Я не знаком с pyad, но если user - строка, и мы можем с уверенностью сказать, что электронная почта - это просто имя пользователя с добавленным к нему ".mail", тогда мы можем просто сделать...
user = "mBobgus.email"
print(user.rstrip(".email"))
mBobgus
Метод строки.rstrip() только что удалил указанную строку с правой стороны строки.
q = pyad.adsearch.ADQuery()
q.execute_query(
attributes=["mail"]
where_clause = "objectClass = '*'"
base_dn = "ou=XXXXXX, ou=XXXX, DC=XXXXXX, DC=XXXXX")
adoutpout = []
for row in q.get_results():
adouput.append(row["mail")
adoutput = [x for x in adouput if x != None]
print(adoutput)
он получит любой адрес в поле Электронная почта в AD. Возможно, вы ищете userPrincipalName, в этом случае просто добавьте его в атрибуты и добавьте строку.