Более прямой способ сделать это - запросить Active Directory. Вы выполняете поиск пользователя, а затем получаете атрибут displayName
. (Это соответствует Full Name
отображаемому в Windows.)
У вас есть два варианта здесь:
Использование библиотеки Python AD, например, pyad
Это очень специфично для Windows и требует библиотеки pywin32
. Он опирается на API-интерфейсы ADSI, поэтому будет работать только на Windows.
from pyad import aduser
user = aduser.ADUser.from_cn(username)
print user.get_attribute("displayName")
Как вы получите имя пользователя, зависит от вас. Вы можете использовать getpass.getuser()
, os.environ["USERNAME"]
(только для Windows) и т.д.
Использование библиотеки Python LDAP, например, ldap3
Это соответствует стандартному протоколу LDAP с чистой реализацией Python, поэтому должен работать с любой клиентской ОС.
Использование необработанных запросов LDAP гораздо сложнее, чем абстракции ADSI. Я предлагаю вам прочитать документацию (в которой есть достойные учебные пособия) и найти дополнительные учебные пособия по взаимодействию с Microsoft AD через ldap3.
Обратите внимание, что одной из возможных проблем является то, что поиск по имени пользователя (CN) может привести к неправильному объекту. Можно иметь несколько объектов с одним и тем же CN в нескольких подразделениях. Если вы хотите быть более точным, вы можете использовать уникальный идентификатор, такой как SID.