Preciso encontrar um usuário e o comando deve sair com um código de retorno diferente de zero se o usuário não estiver no sistema. Podemos fazer isso em bash
, mas preciso disso como um comando de linha, não um bash
script. Isso é possível?
Preciso encontrar um usuário e o comando deve sair com um código de retorno diferente de zero se o usuário não estiver no sistema. Podemos fazer isso em bash
, mas preciso disso como um comando de linha, não um bash
script. Isso é possível?
Uma boa maneira de testar se um usuário existe em um sistema é usando
getent
. Ogetent
utilitário pode retornar várias informações de vários "bancos de dados", por exemplo, opasswd
"banco de dados", ogroup
"banco de dados" e, em alguns sistemas, você pode até pedirgetent
para listar os shells de login disponíveis.Para testar se um usuário,
testuser
, está no sistema, peçagetent
apasswd
entrada desse usuário:Se isso for bem-sucedido, você obterá uma única
passwd
entrada como saída e um status de saída zero degetent
. Se falhar, você não obterá nenhuma saída e um status de saída diferente de zero. Eu acredito que este é o comando que você está pedindo.Podemos descartar qualquer saída gerada pelo utilitário e usá-la em uma
if
instrução, assim:Você poderia, é claro, analisar o
/etc/passwd
arquivo diretamente com algumgrep
comando, mas isso é propenso a erros (em comparação com o usogetent
mostrado acima) e também não funcionaria corretamente em sistemas onde alguma forma de serviço de diretório está em uso.