Войти

Показать полную графическую версию : [решено] Bash ldapsearch дата whencreated в виде переменной


dahiko
15-08-2024, 13:34
Всем привет!

У меня есть bash скрипт, который выгружает пользователей из Active Directory с помощью ldapsearch.

#!/bin/bash
source /home/myproject/scripts/config.sh

#-----------------------------------LDAP QUERY----------------------------------
echo "start ldapsearch"

#BTS ldapsearch, calculate and curl to dashboard
ldapsearch -x -H ldap://$ad -D $aduser -w $adpassword -b 'OU=Users,OU=Test,DC=sec,DC=local' '(&(objectCategory=person)(objectClass=user) (!(userAccountControl:1.2.840.113556.1.4.803:=2))(whencreated<=20240520000000.0Z))' | grep 'mail: ' | cut -d" " -f2 > ./users.txt

Этот скрипт использует переменные $ad, $aduser, $adpassword с другого файла config.sh для подключения к Active Directory и вытаскивает только включенных пользователей, которые были созданы до 20.05.2024.

Теперь стоит задача - перенести дату 20240520000000.0Z в config.sh, чтобы не менять ее постоянно во всех скриптах и дёргать дату в виде переменной в этот скрипт.

Если я подправлю LDAP-фильтр вот так (whencreated<=$date) то это не работает. Никаких ошибок и пользователи просто не выгружаются. Видимо скрипт так и передает в запросе $date а не дату из файла config.sh

Вопрос, как это сделать? Или это не реально внустри LDAP-фильтра подставлять переменную?

dahiko
15-08-2024, 13:49
$date - подумал, что это зарегистрированная команда и ее нельзя использовать и поменял $date на другое имя - тоже не работает

dahiko
15-08-2024, 14:24
Нашел решение - нужо было указать переменную в одинарных кавычках (whencreated<='$date')

NickM
15-08-2024, 14:27
Попробуйте сначала формировать строку поиска, а после её передавать в ldapsearch

Попробуйте сначала формировать строку поиска, а после её передавать в ldapsearch »
Упс, не увидел этого сообщения:
Нашел решение - нужно было указать переменную в одинарных кавычках (whencreated<='$date') »




© OSzone.net 2001-2012