Преобразование метки времени LDAP в другой формат в оболочке Linux - PullRequest
0 голосов
/ 05 августа 2020

Я использую команду ldapsearch в Linux для получения информации LDAP о пользователях. Время последней аутентификации возвращается в формате, который, кажется, называется "FileTime":

authTimestamp: 20200804154203Z

Как мне преобразовать эту временную метку с помощью обычных команд Linux оболочки в более удобочитаемую дату, например 2020-08-04 15:42 ? Я пробовал использовать команду date, но она не распознает данный формат ввода ...

> date --date "20200415062835Z"
date: invalid date ‘20200415062835Z’

Кажется, что date позволяет определять только специальные форматы вывода. Другими словами, я могу напечатать текущую дату в формате, который возвращает LDAP (date +%Y%m%d%H%M%SZ), но я не нахожу способа указать date, что он должен использовать +%Y%m%d%H%M%SZ в качестве формата ввода.

1 Ответ

0 голосов
/ 11 августа 2020

Зная точный формат ввода LDAP authTimestamp (например, 20200415062835Z), я придумал довольно простую функцию для преобразования его в формат YYYY-MM-DD hh:mm:ss в случае, если входные данные соответствуют заданному регулярному выражению.

function _convert_ldap_timestamp() {
    ts=$1
    if [[ "${ts}" =~ ^[0-9]{14}Z$ ]]; then
        echo "${ts:0:4}-${ts:4:2}-${ts:6:2} ${ts:8:2}:${ts:10:2}:${ts:12:2}"
    fi
}

Пример выполнения:

> _convert_ldap_timestamp 20200804154203Z
2020-08-04 15:42:03
...