Поиск в LDAP с использованием Python 3 и запись в CSV - PullRequest
0 голосов
/ 06 августа 2020

Я пишу сценарий Python 3, который подключается к серверу LDAP, ищет идентификаторы пользователей на основе списка, созданного из файла CSV. Затем он печатает и записывает атрибуты пользователей в файл CSV. Как правило, я могу заставить работать любой из моих сценариев, как только получу желаемые данные для печати. Но в этом случае правильные данные «печатаются» на экране, а неправильные данные сохраняются в моем CSV. Как вы увидите в коде, я даже попытался назначить каждый атрибут как переменную в l oop, но это не помогло. (Закомментировано.) CSV показывает только одну строку, как будто мои переменные исчезли:

Результирующий CSV

Я был бы очень признателен за любую помощь! Я что-то делаю не так или это просто невозможно?

    #Connect to LDAP
from ldap3 import Server, Connection, SUBTREE
server = Server('ldap.company.com')
c = Connection(server)
c.bind()

import csv

#open a csv with user IDs, one per row and drops the first "title row."
with open('data/users.csv', newline='') as f:
    reader = csv.reader(f)
    your_list = [tuple(row) for row in reader]
    new_list = your_list.pop(0)
    
res = [''.join(i) for i in your_list]


#Searching LDAP for the users in users.csv and printing/saving to a new csv 'cn', 'title', 'ou.'
def user_search(res):
    for x in res:
        entry_generator = c.extend.standard.paged_search(search_base = 'ou=People,o=Company,c=com',
                                                     search_filter = '(userid='+(x)+')', 
                                                     search_scope = SUBTREE,
                                                     attributes = ['cn', 'title', 'ou'],
                                                     paged_size = 5,
                                                     generator=True)
        with open('data/employee_records.csv', 'w') as csvfile:
            for entry in entry_generator:
                #basedn=(entry['dn'])     I tried to assign each attibute to a spefic variable, issue persists.
                #userinfo=(entry['attributes'])     I tried to assign each attibute to a spefic variable, issue persists.
                print(entry['dn'], entry['attributes'])
                #print(userinfo)          I tried to assign each attibute to a spefic variable, issue persists.
                csvwriter = csv.writer(csvfile)
                csvwriter.writerow(userinfo)

#Run search, close connection to LDAP
user_search(res)
c.unbind()
...