Advertisement
cinguva

searchAD.py

Nov 8th, 2017
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.54 KB | None | 0 0
  1. import requests
  2. import credentials
  3. import json
  4. import itertools
  5. from ldap3 import Server, Connection, ALL, NTLM, SUBTREE
  6. from tqdm import tqdm
  7. #LDAP Search
  8. server = Server('gogo.local', get_info=ALL)
  9. c = Connection(server, user=credentials.ldap_user,password=credentials.ldap_password, authentication=NTLM,auto_bind=True)
  10. c.search(search_base='OU=Temp Disabled,OU=Accounts,DC=gogo,DC=local',search_filter='(objectClass=user)',search_scope=SUBTREE,attributes=['*'],size_limit=0)
  11. entries=c.entries
  12. slack_users_email_list=[]
  13.  
  14. for i in tqdm(range(len(entries))):
  15.     if str(json.loads(entries[11].entry_to_json(include_empty=False))['attributes'].get('mail')) != None:
  16.         slack_users_email_list.append(str(json.loads(entries[i].entry_to_json(include_empty=False))['attributes'].get('mail')))
  17.     else:
  18.         print("None")
  19.  
  20.  
  21. while "None" in slack_users_email_list:
  22.     slack_users_email_list.remove("None")
  23.  
  24.  
  25.  
  26. c.unbind()
  27.  
  28. #We have list of all Slack Users with email addresses
  29. # Compare the above set with
  30.  
  31. # Slack Search Criteria: All Inactive Users who have a gogoair.com email address
  32. url="https://api.slack.com/scim/v1/Users"
  33. params={'count':'5000','filter':'emails co "@gogoair.com" '}
  34. token=credentials.slack_token
  35. headers={"Accept":"application/x-www-form-urlencoded","Authorization": "Bearer %s" %token}
  36. r=requests.get(url=url,headers=headers,params=params)
  37. slack_data=r.json()
  38. users_list=slack_data['Resources']
  39. data=[]
  40.  
  41. #Append all Inactive Slack Gogo Users to data array  
  42. for index in tqdm(range(len(users_list))):
  43.     data.append(users_list[index]['id'])
  44.  
  45.  
  46. file=open('/Users/CInguva/Documents/Development/InactiveUserList.txt','w')
  47. file.write('\n'.join(data))
  48. file.close()
  49. url='https://slack.com/api/users.info'
  50. inputfile=open('/Users/CInguva/Documents/Development/InactiveUserList.txt','r')
  51. slack_mail_list=[]
  52.  
  53. #Get email address of each Inactive Slack User who are marked as deactivated but not yet deprovisioned on Slack
  54. for line in tqdm(inputfile):
  55.     line=line.strip('\n')
  56.     params = (('token', token),('user', line),('pretty', '1'))
  57.     r=requests.get(url=url,headers=headers,params=params)
  58.     #if r.json()['user']['deleted'] != True:
  59.     slack_mail_list.append(r.json()['user']['profile']['email'])
  60.  
  61. #Set with Inactive Users who are not de-provisoned
  62. setSlackList=set(slack_mail_list)
  63. #print(sorted(setSlackList))
  64.  
  65.  
  66. #Set with Users who are in Temp Disabled.
  67. setTempDisabledAD=set(slack_users_email_list)
  68.  
  69. #Get all users who are in Temp Disabled but not de-provisioned
  70. deprovisionobjects=sorted(setTempDisabledAD.intersection(setSlackList))
  71. print(len(deprovisionobjects))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement