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.


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}'

+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:
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.