Awk, чтобы получить всех моих постоянных пользователей в тени


8

У меня есть сценарий.

Я хочу получить всех моих постоянных пользователей, /etc/shadowнапример, всех пользователей, у которых второй термин в теневом файле начинается с $или !$.

Мой шаблон

sudo getent shadow | awk -F: '$2 ~ /^$/ || /^!$/ {print $1}'

Это не работает на данный момент.


это должен быть awk? :-)
Rinzwind

Ответы:


11

Вы должны избегать $, так как это специальный символ для «Конца строки», очень похожий ^на «Начало строки».

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'

+1 хороший улов :)
Rinzwind

Спасибо, это работает. Мне просто нужно не включать пользователя root
danaso

1
Упрощено: awk -F: '$2 ~ /^!?\$/ {print $1}'- Это объединяет два теста на совпадение и говорит: «совпадать со знаком доллара в начале поля, необязательно ( ?) с предшествующим !
символом

4

Все пользователи с установленным паролем могут быть перечислены следующим образом:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.