Criação de usuário no Active Directory com Python.
18/04/2024
0
Prezados, boa noite!
Estou tentando criar um script em Python, ao qual ele recebe o nome do usuário, um pin e uma data, e ele faz essa criação no active directory que está alocado ao windows server 2016. Abaixo apresento o código:
from ldap3 import Connection, MODIFY_ADD, MODIFY_DELETE, MODIFY_REPLACE, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, AUTO_BIND_DEFAULT, AUTO_BIND_NO_TLS, SUBTREE, Server
# Função para criar usuário com base nas regras especificadas
def criar_usuario_Matriz_ClaroMigracao_Talk(pin, nome, data):
# Verifica se a variável nome está vazia
if not nome:
print("A variável nome está vazia. A função não será executada.")
return False
if not pin:
print("A variável nome está vazia. A função não será executada.")
return False
# Configuração do servidor LDAP
server = Server('192.168.0.202', port=389)
# Conectando ao servidor LDAP
con = Connection(server, user=f'abc\\teste.adm', password=f"Teste123*", auto_bind=True)
# Monta o DN (Distinguished Name) do novo usuário
user_dn = f'CN=,OU=TALK,OU=CLARO,OU=OPERACAO,OU=MOC,OU=USUARIOS,OU=Sites,DC=abc,DC=local'
# Extrai o último nome da variável nome
ultimo_nome = nome.split()[-1]
# Extrai o primeiro nome da variável nome
primeiro_nome = nome.split()[0]
# Dados do novo usuário
user_attributes = {
'objectClass': ['top', 'person', 'organizationalPerson', 'user'],
'cn': nome, # nome comum
'sn': ultimo_nome, # sobrenome
'displayName': nome,
'givenName': primeiro_nome, # nome
'sAMAccountName': pin, # nome de logon # nome principal
'unicodePwd': 'TeT2024*', # Defina a senha do usuário aqui
'physicalDeliveryOfficeName': f'NOVATOS ', # Atributo "Escritório"
'description': f'ATENDENTE JR - PIN-', # Atributo "Descrição"
#userAccountControl': 512 #Habilita a conta
}
# Criar a entrada do novo usuário
con.add(user_dn, attributes=user_attributes)
# Verificar se o usuário foi criado com sucesso
if con.result['result'] == 0:
# Fechar a conexão
con.unbind()
else:
print(f"Falha ao criar . Código de erro: {con.result['result']}")
print(f"Descrição do erro: {con.result['description']}")
input("Pressione Enter para continuar...")
# Fechar a conexão
con.unbind()
return False
# Chama a função para criar o usuário
criar_usuario_Matriz_ClaroMigracao_Talk('11111', "Teste Primeiro Segundo", "04-03-2024")
O problema ocorre com o atributo: "unicodePwd". Quando retiro esse atributo, consigo criar o usuário corretamente, porém sem senha. Ao tentar utilizar esse atributo, ocorre o seguinte erro: Código de erro: 53
Descrição do erro: unwillingToPerform
Podem me ajudar?
Estou tentando criar um script em Python, ao qual ele recebe o nome do usuário, um pin e uma data, e ele faz essa criação no active directory que está alocado ao windows server 2016. Abaixo apresento o código:
from ldap3 import Connection, MODIFY_ADD, MODIFY_DELETE, MODIFY_REPLACE, ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES, AUTO_BIND_DEFAULT, AUTO_BIND_NO_TLS, SUBTREE, Server
# Função para criar usuário com base nas regras especificadas
def criar_usuario_Matriz_ClaroMigracao_Talk(pin, nome, data):
# Verifica se a variável nome está vazia
if not nome:
print("A variável nome está vazia. A função não será executada.")
return False
if not pin:
print("A variável nome está vazia. A função não será executada.")
return False
# Configuração do servidor LDAP
server = Server('192.168.0.202', port=389)
# Conectando ao servidor LDAP
con = Connection(server, user=f'abc\\teste.adm', password=f"Teste123*", auto_bind=True)
# Monta o DN (Distinguished Name) do novo usuário
user_dn = f'CN=,OU=TALK,OU=CLARO,OU=OPERACAO,OU=MOC,OU=USUARIOS,OU=Sites,DC=abc,DC=local'
# Extrai o último nome da variável nome
ultimo_nome = nome.split()[-1]
# Extrai o primeiro nome da variável nome
primeiro_nome = nome.split()[0]
# Dados do novo usuário
user_attributes = {
'objectClass': ['top', 'person', 'organizationalPerson', 'user'],
'cn': nome, # nome comum
'sn': ultimo_nome, # sobrenome
'displayName': nome,
'givenName': primeiro_nome, # nome
'sAMAccountName': pin, # nome de logon # nome principal
'unicodePwd': 'TeT2024*', # Defina a senha do usuário aqui
'physicalDeliveryOfficeName': f'NOVATOS ', # Atributo "Escritório"
'description': f'ATENDENTE JR - PIN-', # Atributo "Descrição"
#userAccountControl': 512 #Habilita a conta
}
# Criar a entrada do novo usuário
con.add(user_dn, attributes=user_attributes)
# Verificar se o usuário foi criado com sucesso
if con.result['result'] == 0:
# Fechar a conexão
con.unbind()
else:
print(f"Falha ao criar . Código de erro: {con.result['result']}")
print(f"Descrição do erro: {con.result['description']}")
input("Pressione Enter para continuar...")
# Fechar a conexão
con.unbind()
return False
# Chama a função para criar o usuário
criar_usuario_Matriz_ClaroMigracao_Talk('11111', "Teste Primeiro Segundo", "04-03-2024")
O problema ocorre com o atributo: "unicodePwd". Quando retiro esse atributo, consigo criar o usuário corretamente, porém sem senha. Ao tentar utilizar esse atributo, ocorre o seguinte erro: Código de erro: 53
Descrição do erro: unwillingToPerform
Podem me ajudar?
Marco Araújo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)