Awk, um alle meine regulären Benutzer in den Schatten zu bekommen

8

Ich habe ein Skript.

Ich möchte alle meine regulären Benutzer von /etc/shadowz. B. allen Benutzern erhalten, deren zweiter Begriff in der Schattendatei mit $oder beginnt !$.

Mein Muster ist

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

Es funktioniert momentan nicht.

Danaso
quelle
muss es awk sein? :-)
Rinzwind

Antworten:

11

Sie müssen dem entkommen $, da es sich um ein spezielles Zeichen für "End of Line" handelt, ähnlich wie ^"Beginning of Line".

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'
pLumo
quelle
+1 guter Fang :)
Rinzwind
Danke, es funktioniert. Ich muss nur nicht Root-Benutzer
einschließen
1
Vereinfacht: awk -F: '$2 ~ /^!?\$/ {print $1}'- Dies kombiniert die beiden Übereinstimmungstests und sagt "Übereinstimmung eines Dollarzeichens am Anfang des Feldes, optional ( ?) vorangestellt !"
Bis auf weiteres angehalten.
4

Alle Benutzer mit einem festgelegten Kennwort können wie folgt aufgelistet werden:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
Rinzwind
quelle