#!/usr/bin/env python import ldap import sys import base64 # Global variables LDAPURI = 'ldaps://ds.raininthehobbit.com:636' SEARCHBASE = 'ou=people,dc=raininthehobbit,dc=com,o=raininthehobbit' QUERY = '' uname = "cn=users,ou=users,o=raininthehobbit" pword = base64.b64decode('forbiddenCheesecake') def ldapsearch(ldap_uri, base, query): """ Search requirements base from the website email address, firstname, lastname, uid """ # variables to hold data emails = [] firstname = [] uid = [] lastname = [] # try to bind to ldap server with credential try: l = ldap.initialize(ldap_uri) l.protocol_version = ldap.VERSION3 search_scope = ldap.SCOPE_SUBTREE retrieve_attributes = ["sn","givenname","mail", "uid"] # binding info l.simple_bind(uname, pword) # searching ldap parameters ldap_result_id = l.search( base, search_scope, query, retrieve_attributes ) # record holding list variable result_set = [] # if data is true, retrieve it and store it to result_set while 1: result_type, result_data = l.result(ldap_result_id, 0) if (result_data == []): break else: if result_type == ldap.RES_SEARCH_ENTRY: result_set.append(result_data) if len(result_set) == 0: print('No results found.') return # parse result_set to extract out individual parts from ldap for i in range(len(result_set)): for entry in result_set[i]: try: email = entry[1]['mail'][0] fn = entry[1]['givenname'][0] sid = entry[1]['uid'][0] ln = entry[1]['sn'][0] emails.append(email) firstname.append(fn) uid.append(sid) lastname.append(ln) except: pass except ldap.LDAPError, e: print('LDAPError: %s.' % e) finally: l.unbind_s() processData(lastname, firstname, uid, emails) def processData(lastn, firstn, uid, emaila): """ combining data from above function into one list. sorting this record and then writing it to a file """ record = [] f = open("ldapdata.txt", 'w+') for i in range(len(lastn)): mess = lastn[i] + "," + firstn[i] + "," + emaila[i] + "," + uid[i] + "\n" record.append(mess) # sorting record record.sort() # writing data to file for i in record: f.write(i) print "Task Completed." f.close() # main function def main(): ldapsearch(LDAPURI, SEARCHBASE, QUERY) # Just calling main if __name__ == '__main__': main()