Извлечь срок действия пароля - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу получить дату истечения срока действия пароля из этого вывода:

>chage -l dsi
Last password change                                    : Feb 05, 2020
Password expires                                        : May 05, 2020
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7

Я уже получил так далеко, что вижу только обе даты для "последнего изменения пароля" и "Истечения пароля", но я не получается получить только дату истечения срока действия пароля.

 >chage -l dsi | cut -d ':' -f2 | head -n 2

 Feb 05, 2020
 May 05, 2020

Как получить «05 мая 2020 года» только для сохранения его в переменной для дальнейшей обработки?

Спасибо.

Ответы [ 4 ]

1 голос
/ 06 февраля 2020

Есть несколько вариантов. Тот, который следует вашей схеме, может быть:

chage -l dsi | cut -d ':' -f2 | head -n 2 | tail -1

Таким образом, вы получите первые две строки, а затем последнюю строку (которая является второй во всем тексте).

Я не знаю Мне нравится такой подход, так как он полностью зависит от положения информации. Если порядок изменится, вы получите неправильный ответ. Я хотел бы go для поиска нужной вам информации и затем извлечь дату:

chage -l dsi | grep "Password expires" | cut -d ':' -f2
1 голос
/ 06 февраля 2020

С awk:

chage -l dsi | awk -F':' '$1 ~ /^Password expires/{ print $2 }'

или если вы хотите избавиться от пробела после двоеточия:

chage -l dsi | awk -F':' '$1 ~ /^Password expires/{ sub(/^[[:blank:]]/, "", $2); print $2 }'
1 голос
/ 06 февраля 2020

Вы можете использовать grep для фильтрации нужной строки перед синтаксическим анализом вывода:

chage -l dsi | grep "Password expires" | cut -d ':' -f2

Таким образом, вы всегда получаете только нужную строку.

0 голосов
/ 06 февраля 2020

И вариант с sed

chage -l dsi | sed -n '/Password expires/s/^.*: //p'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...