Bash - Запустить команду chage для каждой учетной записи пользователя

Мне нужно проверять учетные записи пользователей на наших серверах Linux в каждой среде, поэтому я хочу выполнить сценарий, проверяющий, истек ли срок действия каждой учетной записи или нет. У меня есть цикл for , который извлекает учетные записи пользователей, перечисленные в / etc / passwd, и сохраняет их в массиве .

#!/bin/bash
users = $(awk -F: '{ print $1}' /etc/passwd)
uservar=($users)

for value in "${uservar[0]}"
do chage -l $value
done

В идеале сценарий сначала должен отображать имя пользователя , а затем в новой строке показывать дату истечения срока действия учетной записи и другую информацию для этой учетной записи . Процесс будет повторяться для каждой учетной записи.На данный момент просто отображается срок действия учетной записи и даты для всех учетных записей пользователей без имени пользователя, поэтому я не могу отличить учетные записи друг от друга. Все также сложено друг на друга, поэтому их трудно читать. В идеале результат должен выглядеть так:

userA
Last Password Change:    1/2/34
Password Expires:        1/2/34
Password Inactive:       1/2/34
.....

userB
Last Password Change:    1/2/34
Password Expires:        1/2/34
Password Inactive:       1/2/34
.....

Я был бы признателен за любую помощь / предложения по этому поводу.

0
задан 18 May 2021 в 17:50
1 ответ

Буквальный ответ на ваш вопрос:

#!/bin/bash
users=$(awk -F: '{ print $1}' /etc/passwd)

for value in $users
do 
      echo $value
      chage -l $value
      echo "....."
      echo ""
 done

должен генерировать вывод в виде

userA
Last Password Change:    1/2/34
Password Expires:        1/2/34
Password Inactive:       1/2/34
.....

userB
Last Password Change:    1/2/34
Password Expires:        1/2/34
Password Inactive:       1/2/34
.....

Обратите внимание, что источник информации chage закодирован в полях файла /etc/shadow (выраженном как количество дней с 1 января 1970 года).
Анализ этого файла напрямую может быть значительно более эффективным, чем использование chage и / или других инструментов, которые преобразуют эти поля в читаемый человеком вывод и синтаксический анализ.

1
ответ дан 28 July 2021 в 14:06

Теги

Похожие вопросы