Awk para colocar todos os meus usuários regulares na sombra

8

Eu tenho um roteiro.

Eu quero obter todos os meus usuários regulares, por /etc/shadowexemplo, todos os usuários cujo segundo termo no arquivo sombra começa com $ou !$.

Meu padrão é

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

Não funciona por enquanto.

danaso
fonte
tem que ser awk? :-)
Rinzwind 5/08/19

Respostas:

11

Você precisa escapar do $, pois é um caractere especial para "End of Line", assim como ^é "Beginning of Line".

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'
pLumo
fonte
+1 boa captura :)
Rinzwind 5/08/19
Obrigado, funciona. Eu só preciso não incluem usuário root
danaso
1
Simplificado: awk -F: '$2 ~ /^!?\$/ {print $1}'- Combina os dois testes de correspondência e diz "corresponder a um sinal de cifrão no início do campo, opcionalmente ( ?) precedido por um !"
Pausado até novo aviso.
4

Todos os usuários com um conjunto de senhas podem ser listados assim:

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