Как работать с выводом из 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


Это удачное сравнение двух дат, но я не знаю, как работать с соответствующим аккаунтом.



Спасибо всем

531   2  

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

    Ничего не найдено.