Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2017 09:22:20

04thq
Зарегистрирован: 2017-12-25
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Создать скрипт для определения пользователей с одинаковыми именами

Приветствую! При слиянии нескольких TDS (Tivoli Directory Server) будет ситуация, что пользователи будут дублироваться. Если у пользователей совпадает DN, то будет ошибка, однако, если у них одно имя, но разные DN, то пользователи будут дублироваться, и, при попытке входа под таким именем, WAS выдаст ошибку, что найдено несколько пользователей с различными DN.
Поэтому для миграции нужен скрипт, который будет проверять, есть ли дубликаты пользователей и будет выводить их список в файл.
Даже не знаю с чего начать, буду благодарен за любую помощь
Сравнивать необходимо поле UID

 #! /usr/bin/python
 
# Authentication 
ldap_dn = "cn=qwerty"
ldap_pwd = "tivoli"
ldap_server = ""
sameb_uid = "sec_master"
sameb_pwd = "tivoli"
 
# The part of the LDAP tree where you expect users 
ldap_base = "ou=users,O=qwert,C=RU"
 
# The part of the LDAP tree where the SAMeb 
# configuration is located
ldap_sameb_base = "secAuthority=qwerrty"
 
# Internal configuration 
ldap_user_file = "ldap_users"
 
from subprocess import call
 
call("C:\OpenLDAP\ClientTools\ldapsearch -LLL -D " + ldap_dn + " -w " + ldap_pwd 
    + " -b " + ldap_base + " -h " + ldap_server + 
    " objectclass=inetOrgPerson uid >" + ldap_user_file,
        shell=True)
 
ldap_users = open(ldap_user_file, "r")
 
k=0;
p=0;
for line in ldap_users:
    if len(line) > 1:
        p=0;
        if (k==1):
            uid = line[5:-1]
            print dn
            print uid
            call("pdadmin -a " + sameb_uid + " -p " +
                sameb_pwd + " user import " + uid + 
                " " + dn,
                shell=True);
            call("pdadmin -a " + sameb_uid + " -p " +
                sameb_pwd + " user modify " + uid + 
                " account-valid yes ",
                shell=True);
            k=0; p=1;   
        if (k==0):
            if (p==0):
                dn = line[4:-1]
                k=k+1;

Отредактировано 04thq (Дек. 25, 2017 09:27:05)

Офлайн

#2 Дек. 26, 2017 05:49:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Создать скрипт для определения пользователей с одинаковыми именами

Используй модуль ldap3
https://pypi.python.org/pypi/ldap3

Когда получишь пользователей, можешь прямо в памяти их сравнить, если их немного. Если их много, выведешь в файл и потом файлы будешь сравнивать.



Отредактировано py.user.next (Дек. 26, 2017 05:51:39)

Офлайн

#3 Дек. 26, 2017 10:38:12

04thq
Зарегистрирован: 2017-12-25
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Создать скрипт для определения пользователей с одинаковыми именами

Пользователей достаточно много, и извлечь их правильно у меня не получается.
Что-то перед новым годом дела не идут.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version