Solución:
La forma más directa de hacer esto es consultar Active Directory. Realizaría una búsqueda en el usuario, seguida de obtener el displayName
atributo. (Esto se asigna al Full Name
mostrado en Windows.)
Tienes dos opciones aquí:
Usando una biblioteca de Python AD, por ejemplo, pyad
Esto es muy específico de Windows y requiere pywin32
Biblioteca. Se basa en las API de ADSI, por lo que solo funcionará en Windows.
from pyad import aduser
user = aduser.ADUser.from_cn(username)
print user.get_attribute("displayName")
La forma de obtener el nombre de usuario depende de usted. Puedes usar getpass.getuser()
, os.environ["USERNAME"]
(Solo Windows), etc.
Usando una biblioteca LDAP de Python, por ejemplo, ldap3
Esto sigue el protocolo LDAP estándar, con una implementación pura de Python, por lo que debería funcionar desde cualquier sistema operativo cliente.
El uso de consultas LDAP sin procesar es bastante más complicado que las abstracciones ADSI. Le sugiero que lea la documentación (que tiene tutoriales decentes) y busque más tutoriales sobre cómo interactuar con Microsoft AD a través de ldap3.
Tenga en cuenta que un posible problema es que la búsqueda solo por nombre de usuario (CN) podría obtener el objeto incorrecto. Es posible tener varios objetos con el mismo CN en varias OU. Si desea ser más preciso, es posible que desee utilizar un identificador único como el SID.