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

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

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, количество пользователей, срок действия которых истек?

благодаря

Вы можете скомбинировать два из трех довольно легко (количество пользователей и заблокированное количество учетных записей) с 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"