pyad - Получить имя пользователя с адреса электронной почты - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь получить список имен пользователей, используя список писем в pyad.Я знаю, что могу получать электронные письма от имен пользователей:

user = aduser.ADUser.from_cn('username').mail

Но мне было интересно, есть ли способ сделать обратное.

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018
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)

это получит любой адрес в поле Email в AD.Возможно, вы ищете userPrincipalName, в этом случае просто добавьте его в атрибуты и добавьте строку.

0 голосов
/ 06 июня 2019

Я знаю, что уже слишком поздно отвечать на эту тему, но это может помочь другим, кто ищет такое решение.

Вы можете использовать выражение 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'))
0 голосов
/ 05 декабря 2018

Я не знаком с pyad, , но , если пользователь - строка, и мы можем с уверенностью сказать, что электронная почта - это просто имя пользователя с добавленным к нему ".mail", тогда мы можем просто сделать...

user = "mBobgus.email"
print(user.rstrip(".email"))  


mBobgus

Метод строки .rstrip () только что удалил указанную строку с правой стороны строки.

...