61 lines
2.2 KiB
Python
61 lines
2.2 KiB
Python
from getpass import getpass
|
|
import subprocess
|
|
import ldap3
|
|
from ldap3 import Server, Connection, ALL
|
|
import os
|
|
|
|
# Get the userDN using WHOAMI /FQDN
|
|
def get_user_dn():
|
|
try:
|
|
result = subprocess.run(['whoami', '/FQDN'], capture_output=True, text=True, check=True)
|
|
return result.stdout.strip()
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Error getting user DN: {e}")
|
|
return None
|
|
|
|
# Get the LDAP server (LOGONSERVER environment variable)
|
|
def get_logon_server():
|
|
return os.getenv('LOGONSERVER').replace('\\', '') # Clean up the format, e.g., from '\\SERVER' to 'SERVER'
|
|
|
|
# Get the userDN and server
|
|
user_dn = get_user_dn()
|
|
server_name = get_logon_server()
|
|
|
|
if user_dn and server_name:
|
|
# Set up the LDAP server and connection
|
|
server = Server(f'ldap://{server_name}')
|
|
conn = Connection(server, user=user_dn, password='your_password', auto_bind=True) # Provide the password if needed
|
|
|
|
# Search for the user (adjust the search to fit your needs)
|
|
conn.search(user_dn, '(objectClass=person)', attributes=[
|
|
'distinguishedName', 'givenName', 'sn', 'displayName', 'mail',
|
|
'userPrincipalName', 'sAMAccountName', 'userAccountControl',
|
|
'profilePath', 'scriptPath', 'homeDirectory', 'homeDrive', 'mobile', 'info'
|
|
])
|
|
|
|
# Check if the user was found
|
|
if conn.entries:
|
|
user = conn.entries[0]
|
|
print(f"DN: {user.distinguishedName}")
|
|
print(f"First name: {user.givenName}")
|
|
print(f"Last name: {user.sn}")
|
|
print(f"Display name: {user.displayName}")
|
|
print(f"Email: {user.mail}")
|
|
print(f"User logon name: {user.userPrincipalName}")
|
|
print(f"pre-Windows 2000 logon name: {user.sAMAccountName}")
|
|
print(f"Account Disabled: {user.userAccountControl}")
|
|
print(f"Profile path: {user.profilePath}")
|
|
print(f"Logon script: {user.scriptPath}")
|
|
print(f"Home folder, local path: {user.homeDirectory}")
|
|
print(f"Home folder, Connect, Drive: {user.homeDrive}")
|
|
print(f"Mobile: {user.mobile}")
|
|
print(f"Notes: {user.info}")
|
|
else:
|
|
print("User not found.")
|
|
|
|
# Close the connection
|
|
conn.unbind()
|
|
|
|
else:
|
|
print("Failed to retrieve user DN or server information.")
|