Awk, aby ukryć wszystkich moich zwykłych użytkowników

8

Mam scenariusz

Chcę uzyskać wszystkich moich zwykłych użytkowników od /etc/shadownp. Wszystkich użytkowników, których drugi termin w pliku cienia zaczyna się od $lub !$.

Mój wzór to

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

Na razie nie działa.

danaso
źródło
czy to musi być awk? :-)
Rinzwind,

Odpowiedzi:

11

Musisz uciec $, ponieważ jest to specjalny znak dla „End of Line”, podobnie jak ^„Beginning of Line”.

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'
pLumo
źródło
+1 dobry haczyk :)
Rinzwind
Dzięki, działa. Po prostu muszę nie uwzględniać użytkownika root
danaso,
1
Uproszczone: awk -F: '$2 ~ /^!?\$/ {print $1}'- Łączy dwa testy dopasowania i mówi „dopasuj znak dolara na początku pola, opcjonalnie ( ?) poprzedzony przez !
Wstrzymano do odwołania.
4

Wszystkich użytkowników z ustawionym hasłem można wymienić w następujący sposób:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
Rinzwind
źródło