Comando para verificar se os usuários em /etc/passwd existem em um arquivo diferente

Comando para verificar se os usuários em /etc/passwd existem em um arquivo diferente

É possível consultar o arquivo /etc/passwd para visualizar todos os UIDS de usuários menores que 200 e verificar se esses usuários estão dentro de um arquivo como /etc/ftpusers?

Até agora, consegui criar o comando abaixo, que lista todos os usuários com um UID inferior a 200, mas não tenho certeza de como verificar se esses usuários listados estão no arquivo /etc/ftpusers.

grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}'

Se algum usuário não estiver no arquivo, preciso que a diferença seja exibida. Tentei usar uma instrução for, mas não funcionou bem.

Responder1

Não sei se aix difftenho a mesma opção, GNU diffmas no meu linuxthis quando executado com ksh(o shell padrão em aix) funciona:

diff -I "^#" --new-line-format="" --unchanged-line-format="" <(awk -F: '$3 < 200  {print $1}' /etc/passwd) /etc/ftpusers

Se o diffcomando for diferente, tente com um loop:

for u in $(awk -F":" '$3 < 200 {print $1}' /etc/passwd); do
        count=$(grep -scx "$u" /etc/ftpusers)
        [ "$count" -gt 0 ] || echo "$u"
done

Eu testei kshe funcionou.

Também verifiquei as grepopções disponíveis no grepwhit distribuído aixe ele suporta tanto -ccontagem quanto -ssupressão de mensagens de erro.

informação relacionada