Awk pour obtenir tous mes utilisateurs réguliers dans l'ombre

8

J'ai un script.

Je veux obtenir tous mes utilisateurs réguliers, par /etc/shadowexemple de tous les utilisateurs dont le deuxième terme dans le fichier fantôme commence par $ou !$.

Mon modèle est

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

Ça ne marche pas pour l'instant.

danaso
la source
faut-il que ce soit génial? :-)
Rinzwind

Réponses:

11

Vous devez échapper au $, car il s'agit d'un caractère spécial pour "Fin de ligne" tout comme ^"Début de ligne".

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'
pLumo
la source
+1 bonne prise :)
Rinzwind
Merci, ça marche. J'ai juste besoin de ne pas inclure l'utilisateur root
danaso
1
Simplifié: awk -F: '$2 ~ /^!?\$/ {print $1}'- Ceci combine les deux tests de correspondance et dit "correspondre à un signe dollar au début du champ, éventuellement ( ?) précédé d'un !"
Pause jusqu'à nouvel ordre.
4

Tous les utilisateurs avec un mot de passe peuvent être répertoriés comme ceci:

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