53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
#!/usr/bin/python3
|
|
from ldap3 import Server, Connection, ALL, NTLM, SUBTREE, SAFE_SYNC, BASE
|
|
# from samba.samdb import SamDB
|
|
# from samba.auth import system_session
|
|
# from samba.ndr import ndr_pack, ndr_unpack
|
|
# from samba.dcerpc import security
|
|
# import samba.param
|
|
import logging
|
|
from pprint import pprint
|
|
import json
|
|
import csv
|
|
import subprocess
|
|
import time
|
|
|
|
|
|
|
|
class AD_provaider():
|
|
def __init__(self, url:str, serch_tree:str, user, password) -> None:
|
|
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s")
|
|
self.__server = Server(url)
|
|
self.__connect = Connection(self.__server, user, password)
|
|
self.__ad_serch_tree = serch_tree
|
|
if self.__connect.bind():
|
|
logging.info("status connect AD.........ok")
|
|
else:
|
|
logging.warning("status connect AD.........error")
|
|
|
|
|
|
|
|
def search_ms_ad(self, search_filter ,filter:list = ["*"])->dict:
|
|
logging.info("search >>>>>>>>>>>>>> AD")
|
|
self.__connect.search(self.__ad_serch_tree, search_filter, SUBTREE, attributes=filter)
|
|
response = self.__connect.response_to_json()
|
|
response = json.loads(response)
|
|
response = json.dumps(response, ensure_ascii="utf-8")
|
|
out = json.loads(response)
|
|
pprint(out, indent=4)
|
|
# return json.loads(response)
|
|
|
|
|
|
MS_AD_ADRESS = 'ldap://cp-vm-dc01.energo.ru'
|
|
SEARCH_FREE_MS = "dc=energo,dc=ru"
|
|
MS_USER = 'energo\\administrator'
|
|
PASSWORD = "P@sww0rd"
|
|
PATH_SCV = "List_groups.csv"
|
|
|
|
SEARCH_FREE_SAMBA = "dc=lenenergo,dc=ru"
|
|
|
|
ad = AD_provaider(MS_AD_ADRESS, SEARCH_FREE_MS, MS_USER, PASSWORD)
|
|
|
|
# ad.search_ms_ad("(&(objectCategory=group)(name=test)(distinguishedName=CN=test,ou,base))") # Поиск
|
|
|