Объясните новичку

krisak

Новичок
Пользователь
Мар 31, 2022
4
0
1
Добрый день!

Начал изучать Python и решил потренироваться. Сейчас я реализую создание пользователей в Active Directory через Python module ldap3

Файл searchuo.py по задумке отвечает за поиск OU в домене
Python:
import ad

##### ПОИСК OU  #####
def search():
    ad.conn.search('OU=*****,OU=*******,DC=*****,DC=******','(&(objectclass=OrganizationalUnit))', attributes=['name'])
    for entry in ad.conn.entries:
        print(entry.name)

adduser.py Сейчас выглядит как print отделов и дальше скопировать.
Python:
import ad
import searchuo as suo


### Меню выбора ###
print("\n Выберите:\n 1 - Создание пользователя \n 2 - Поиск")
x = input("Пожалуйста, выберите вариант:\n")

x = int(x)

if x is 1:
    suo.search()
    otdel = input('Выберите отдел: ')

Вопрос, как реализовать выбор на подобии меню и передачу в переменную. Куда копать? что изучать. Может есть примеры? Да и вообще, правильно ли я делаю?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
может так?
Python:
if x == 1:
    suo.search()
    otdel = input('Выберите отдел: ')
 

krisak

Новичок
Пользователь
Мар 31, 2022
4
0
1
может так?
Python:
if x == 1:
    suo.search()
    otdel = input('Выберите отдел: ')
Вы наверное меня не поняли. Что делает первый код? ищет OU и выводит атрибут name.

Во второй файл я передал его как функцию. А как организовать из поиска выбор? т.е. нажав 1 он перевел меня в условия создания пользователя. дальше отрабатывает ф-ция search, но это по сути просто принт. А мне требуется чтобы вывод был с номером и я выбрав цифру 2 он внес в переменную otdel
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
А мне требуется чтобы вывод был с номером
с каким номером?
я выбрав цифру 2 он внес в переменную otdel
вам нужно чтобы suo.search() запускалась и вывод функции помещался в переменную otdel, если вы выбрали 2 - Поиск?
 
Последнее редактирование:

krisak

Новичок
Пользователь
Мар 31, 2022
4
0
1
с каким номером?

вам нужно чтобы suo.search() запусклась, если вы выбрали 2 - Поиск?
нет,suo запускается правильно, мне надо, чтобы это не print был, а данные с порядковыми номерами
Т.е. сейчас:
ИТ
Бухгалтерия

А надо:
1 ИТ
2 Бухгалтерия

и по нажатию кнопки заносилось значение в переменную otdel
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
это строка скорее всего, можете добавить в ручную эти номера, или почитать документацию, может есть какие то методы для поиска
ваш пример я не смог воспроизвести, поэтому помочь мало чем могу, и модуль ad я что то не нашел...

можете скинуть полный вывод, могу кинуть пример как номера эти добавить, больше не знаю чем помочь...
 

krisak

Новичок
Пользователь
Мар 31, 2022
4
0
1
Код:
Выберите:
 1 - Создание пользователя (Альфа тестирование, не для продакшена)


Пожалуйста, выберите вариант:
1
ИТ
Касса
Отдел кадров
Выберите отдел выше:

Вот вывод, первое что хотелось добавить к нему нумерацию и второе в поле "Выберите отдел выше" выбрав цифру, занеслось бы в переменную. Print тут не подходит, возможно надо в сторону массивов двигаться.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
Код:
Выберите:
 1 - Создание пользователя (Альфа тестирование, не для продакшена)


Пожалуйста, выберите вариант:
1
ИТ
Касса
Отдел кадров
Выберите отдел выше:

Вот вывод, первое что хотелось добавить к нему нумерацию и второе в поле "Выберите отдел выше" выбрав цифру, занеслось бы в переменную. Print тут не подходит, возможно надо в сторону массивов двигаться.
можно так добавить номера
Python:
import ad

##### ПОИСК OU  #####
def search():
    ad.conn.search('OU=*****,OU=*******,DC=*****,DC=******','(&(objectclass=OrganizationalUnit))', attributes=['name'])
    count = 1
    for entry in ad.conn.entries:
        print(f"{count}. {entry.name}")
        count += 1

и уже потом делаете условие, если выбрали 1, то в otdel пишется ИТ, если 2 - то пишется Касса и так далее
 

Форум IT Специалистов