Я хочу найти в Active Directory неактивных пользователей, у которых нет логина в течение x дней / месяцев. У меня такой запрос ldapsearch:
ldapsearch -h domain.test -p 389 -D "cn=login,ou=test,dc=domain,dc=test" -w "passwd" -s sub -b "ou=Test,dc=domain,dc=test" "(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))"
Это дает мне список всех неактивных пользователей в domain.test со всеми атрибутами.
Я хотел бы добавить фильтр для поиска пользователей, у которых нет входа в систему в течение x дней / месяцев, и было бы замечательно, если бы результатом был список sAMAccountNames (неактивный пользователь и lastLogonTimestamp> например, 3 месяца). Я знаю, что LastLogonTimestamp не является реальным временем последнего входа пользователя, но в этом случае это не так важно.
РЕДАКТИРОВАТЬ: теперь мне нужно только знать, есть ли способ показать атрибут, как "lastLogonTimestamp" в выводе вышеупомянутого запроса ldapsearch?
ОТВЕТ: Атрибут lastLogonTimestamp не был установлен для каждого объекта в выходных данных вышеупомянутого запроса ldapsearch. Я этого не заметил. Итак, grep отобразил это:
ldapsearch -h domain.test -p 389 -D "cn=login,ou=test,dc=domain,dc=test" -w "passwd" -s sub -b "ou=Test,dc=domain,dc=test" "(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=2))" | grep -i lastlogontimestamp
РЕДАКТИРОВАТЬ: Для преобразования окон lastLogonTimestamp на сегодняшний день я использовал:
while read -r line;
do
let "ts = ($line / 10000000) - 11644473600" && echo $ts >> linux_timestamp;
date -d @$ts +'%Y%m%d' >> linux_date;
done < users_lastlogontimestamp
Любой совет очень ценится.