id -u somename
retorna um código de saída diferente de zero quando o usuário não existe.
Você pode testá-lo simplesmente ... ( &>/dev/null
apenas suprime a saída / aviso normal)
id -u somename &>/dev/null || useradd somename
Estou executando o comando useradd {user}
para adicionar usuários ao meu sistema, embora planeje executá-lo em um ambiente automatizado e ele pode acabar sendo executado novamente, mesmo que o usuário já exista.
Existe uma maneira de executar isso somente se o usuário ainda não existir? O usuário não tem uma pasta pessoal.
A menos que você tenha apenas um pequeno punhado de sistemas, você está fazendo a pergunta errada. A resposta é não executar o useradd, mas deixar este trabalho para uma solução de gerenciamento de configuração, como fantoche ou chef. Isso permitirá que suas definições de usuário sejam centralizadas e impedir que você execute loops e use ssh com usuários root para configurar seus sistemas. Você sempre terá sistemas em um estado de configuração conhecido.
A documentação para fantoches está disponível no link
Como exemplo no fantoche:
user { "bob" :
password => "$1$yv3n066X$Vpb05Ac/fHTicNdT9T5vz1", # generated with 'openssl passwd -1'
ensure => present, # ensure => absent to remove
managehome => true,
}
tente isto:
useradd {user} || echo "User already exists."
ou até mesmo isso:
useradd {user} || true
useradd não adicionará o usuário novamente se já existir, ele pretende garantir que o número uid e o login uid sejam exclusivos. Se você estiver planejando executar um lote, verifique se os uids que estão sendo usados são exclusivos; useradd iria reclamar para as entradas problemáticas e você precisa capturar os erros / stderr para ver quais contas de usuários tiveram problemas para entrar nos sistemas de contas (/ etc / passwd, group, shadow).
Tags users