fix: lk_diagnostic.py - separate short_name for sAMAccountName and ANR

This commit is contained in:
Денис Кривоченко
2026-08-11 11:52:13 +07:00
parent cc9d3ca78a
commit 427f6ed000
+15 -6
View File
@@ -46,12 +46,12 @@ print("=" * 60)
email = "la.guseynova@sibcem.ru" email = "la.guseynova@sibcem.ru"
search_id = email.replace("@tcs.sibcem.ru", "@sibcem.ru") search_id = email.replace("@tcs.sibcem.ru", "@sibcem.ru")
short_name = search_id.split("@")[0] short_name = search_id.split("@")[0] # la.guseynova — без домена
print(f"\n--- 0. Поиск в AD ---") print(f"\n--- 0. Поиск в AD ---")
print(f" Email: {email}") print(f" Email: {email}")
print(f" Search ID: {search_id}") print(f" Search ID: {search_id}")
print(f" Short: {short_name}") print(f" Short (без домена): {short_name}")
AD_SERVER = "172.16.20.20" AD_SERVER = "172.16.20.20"
AD_BASE = "DC=sibcem,DC=ru" AD_BASE = "DC=sibcem,DC=ru"
@@ -63,10 +63,17 @@ try:
read_only=True read_only=True
) )
# Универсальный фильтр: mail, sAMAccountName, userPrincipalName, ANR # Разделяем поиск:
# ANR — Approximate Name Resolution, ищет по любому атрибуту # - mail: полный email с доменом (la.guseynova@sibcem.ru)
search_filter = f"(|(mail={search_id}*)(sAMAccountName={search_id})(userPrincipalName={search_id}*)(anr={search_id}))" # - sAMAccountName: только логин без домена (la.guseynova)
# - userPrincipalName: полный UPN с доменом
# - anr: логин без домена (ANR ищет по sAMAccountName, displayName, etc.)
search_filter = f"(|(mail={search_id}*)(sAMAccountName={short_name})(userPrincipalName={search_id}*)(anr={short_name}))"
print(f" LDAP-фильтр: {search_filter}") print(f" LDAP-фильтр: {search_filter}")
print(f" mail: {search_id} (полный email)")
print(f" sAMAccountName: {short_name} (без домена)")
print(f" userPrincipalName: {search_id} (полный UPN)")
print(f" anr: {short_name} (без домена)")
conn.search( conn.search(
search_base=AD_BASE, search_base=AD_BASE,
@@ -83,6 +90,7 @@ try:
mobile = str(entry.mobile) if 'mobile' in entry else "" mobile = str(entry.mobile) if 'mobile' in entry else ""
pager = str(entry.personalPager) if 'personalPager' in entry else "" pager = str(entry.personalPager) if 'personalPager' in entry else ""
print(f"\n НАЙДЕН:")
print(f" CN: {cn}") print(f" CN: {cn}")
print(f" sAMAccountName: {sam}") print(f" sAMAccountName: {sam}")
print(f" mail: {mail}") print(f" mail: {mail}")
@@ -94,7 +102,7 @@ try:
print(" Не найден по расширенному фильтру. Пробую ANR отдельно...") print(" Не найден по расширенному фильтру. Пробую ANR отдельно...")
conn.search( conn.search(
search_base=AD_BASE, search_base=AD_BASE,
search_filter=f"(anr={search_id})", search_filter=f"(anr={short_name})",
attributes=["cn", "sAMAccountName", "mail", "userPrincipalName", "extensionAttribute2", "mobile", "personalPager"] attributes=["cn", "sAMAccountName", "mail", "userPrincipalName", "extensionAttribute2", "mobile", "personalPager"]
) )
if conn.entries: if conn.entries:
@@ -107,6 +115,7 @@ try:
mobile = str(entry.mobile) if 'mobile' in entry else "" mobile = str(entry.mobile) if 'mobile' in entry else ""
pager = str(entry.personalPager) if 'personalPager' in entry else "" pager = str(entry.personalPager) if 'personalPager' in entry else ""
print(f"\n НАЙДЕН (ANR fallback):")
print(f" CN: {cn}") print(f" CN: {cn}")
print(f" sAMAccountName: {sam}") print(f" sAMAccountName: {sam}")
print(f" mail: {mail}") print(f" mail: {mail}")