Команда, чтобы получить счет списка заблокированных пользователей, разблокирован, истек

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

cut -d: -f1 /etc/passwd|wc -l cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'|wc -l awk -F: '{ system("passwd -S " $1)}' /etc/passwd | grep " PS "|wc -l cut -f 1 -d: /etc/passwd | xargs -n 1 -I {} bash -c ' echo -n {}" "; chage -l {} | fgrep "Password expires"' | column -t|wc -l 

Есть ли способ, которым я могу добавить команду echo к нему и / или использовать одну команду, чтобы получить всю эту информацию, а также получить информацию об истечении срока действия учетной записи? echo «Количество пользователей = xx», количество заблокированных учетных записей пользователей = xx, количество пользовательских паролей, которое никогда не истекает = xx, количество пользователей, срок действия которых истек?

благодаря

One Solution collect form web for “Команда, чтобы получить счет списка заблокированных пользователей, разблокирован, истек”

Вы можете скомбинировать два из трех довольно легко (количество пользователей и заблокированное количество учетных записей) с awk ed passwd -Sa , но вам нужно будет passwd -Sa цикл к chage чтобы показать истекшие пароли.

 passwd -Sa | awk 'BEGIN {lockedusers=0} $2 ~ /L/ {lockedusers++} END {print "Total users:",NF;print "Locked users:",lockedusers}' neuser=0 for user in $(cut -f1 -d: /etc/passwd); do if chage -l "$user" | grep -i '^Password expires' | grep -q never; then neuser=$((neuser+1)) fi done echo "Non-expiring users: $neuser" 

Если вашей реализации passwd не хватает -a (например, распределений, полученных из Red Hat), вы можете использовать аналогичную for цикла:

 neuser=0 for user in $(cut -f1 -d: /etc/passwd); do if chage -l "$user" | grep -i '^Password expires' | grep -q never; then neuser=$((neuser+1)) fi passwd -S "$user" done | awk 'BEGIN {lockedusers=0} $2 ~ /L/ {lockedusers++} END {print "Total users:",NF;print "Locked users:",lockedusers}' echo "Non-expiring users: $neuser" 
  • удаление избыточности из выходных столбцов
  • Как подключиться к Tar с помощью BASH?
  • Используя sshpass, код возврата (статус выхода) отличается по неизвестным причинам с использованием допустимых команд
  • Почему команда history ничего не делает в файле сценария?
  • Может кто-нибудь уточнить этот сценарий Bash
  • Сценарий оболочки, чтобы найти, какой пакет предоставляет файл на OpenBSD
  • Как определить, является ли DE Unity или XFCE с помощью сценария оболочки?
  • Аргументы «тире» для сценариев оболочки
  • Как проверить, присутствует ли файл, начинающийся с определенного префикса, в каталоге в сценарии оболочки
  • Определение общего интерпретатора для такой программы, как ожидать?
  • Шаблон Regex для замены нескольких значений с помощью sed
  • Linux и Unix - лучшая ОС в мире.