A maneira mais direta de fazer isso é consultar o Active Directory. Você faria uma pesquisa no usuário, seguido do atributo displayName
. (Isso mapeia para o Full Name
exibido no Windows.)
Você tem duas opções aqui:
Usando uma biblioteca do AD do Python, por exemplo pyad
Isso é muito específico do Windows e requer a biblioteca pywin32
. Ele depende de APIs ADSI, portanto, funcionará somente no Windows.
from pyad import aduser
user = aduser.ADUser.from_cn(username)
print user.get_attribute("displayName")
Como você obtém o nome de usuário é com você. Você pode usar getpass.getuser()
, os.environ["USERNAME"]
(somente para Windows), etc.
Usando uma biblioteca LDAP do Python, por exemplo ldap3
Isso segue o protocolo LDAP padrão, com uma implementação pura do Python, portanto, deve funcionar em qualquer sistema operacional cliente.
O uso de consultas LDAP brutas é um pouco mais complicado que as abstrações ADSI. Eu sugiro que você leia a documentação (que tem tutoriais decentes) e procure por mais tutoriais sobre como interagir com o Microsoft AD via ldap3.
Observe que um possível problema é que a pesquisa pelo nome de usuário (CN) sozinho pode gerar o objeto errado. É possível ter vários objetos com o mesmo CN em várias UOs. Se você quer ser mais preciso, você pode querer usar um identificador único como o SID.