Как работать с выводом из ldapsearch в bash
Допустим, у меня есть вывод из ldapsearch в следующем формате:
dn: user1...
dateOfExpire: someDate
dn: user2
dateOfExpire: someDate
....
Как я могу сделать что-то подобное:
if [ "$someDate" = "$now" ]; then
echo "same day"
elif expr "$someDate" "<" "$now" >/dev/null; then
do some action with user account which date is expired
fi
Это удачное сравнение двух дат, но я не знаю, как работать с соответствующим аккаунтом.
Спасибо всем
2 ответов:
Вы можете попробовать это :
#!/bin/bash ldapDate='20170406000000' today=$(date '+%Y/%m/%d 00:00:00') someDate=$(sed -E 's|^([0-9]{4})([0-9]{2})([0-9]{2}).*$|\1/\2/\3 00:00:00|g' <<< $ldapDate) today_t=$(date -d "$today" '+%s') somedate_t=$(date -d "$someDate" '+%s') if [[ "$somedate_t" -eq "$today_t" ]]; then echo "Same Day" elif [[ "$somedate_t" -le "$today_t" ]]; then echo "Expired" elif [[ "$somedate_t" -ge "$today_t" ]]; then echo "Not Expired" else echo "Unknown" fi
Если у вас есть GNU
date, Вы можете преобразовать даты в эпоху, выполнить простое сравнение целых чисел и получить статус выхода для выполнения дальнейшей операции. Например:% date -d 'yesterday' '+%s' 1494314230 % date '+%s' 1494400638 % (( $(date '+%s') > $(date -d 'yesterday' '+%s') )) % echo $? 0 % (( $(date '+%s') < $(date -d 'yesterday' '+%s') )) % echo $? 1
Comments