Eu quero pesquisar no Active Directory para usuários inativos que não têm login por x dias / meses. Eu tenho uma consulta do tipo 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))"
Isso me dá a lista de todos os usuários inativos em domain.test com todos os atributos.
Eu gostaria de adicionar um filtro para pesquisar usuários que não têm login por x dias / meses, e seria ótimo se o resultado fosse a lista de sAMAccountNames (usuário inativo e lastLogonTimestamp > por exemplo, 3 meses).
Estou ciente de que LastLogonTimestamp não é o tempo real do último logon do usuário, mas neste caso não é tão importante.
EDIT: agora eu só preciso saber se existe uma maneira de mostrar o atributo como "lastLogonTimestamp" na saída da consulta ldapsearch acima?
ANSWER : o atributo lastLogonTimestamp não foi definido para cada objeto na saída da consulta ldapsearch acima. Eu não notei isso. Então grep o exibiu:
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
EDIT: Para converter o windows lastLogonTimestamp para data eu usei:
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
Qualquer conselho muito apreciado.