De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Smailli Hemori Moraes
Data de Publicação: 02 de Dezembro de 2006
Em um cliente houve a necessidade de criar um script para que fossem adicionados usuários automáticamente no sistema.
Existe um servidor de e-mail que serve como webmail para todos ou funcionários. Porém havia um problema, cada vez que um funcionário novo fosse contratado havia a necessidade de adicionar a conta do usuário manualmente no webmail.
A solução que optei foi gerar um script que juntamente com o procmail cadastre os usuários automaticamente no sistema.
#!/bin/bash
FINGER=`which finger`
PASSWD=`which passwd`
USERADD=`which useradd`
USERDEL=`which userdel`
AWK=`which awk`
ECHO=`which echo`
GREP=`which grep`
LOGGER=`which logger`
add () {
while read FILE ; do
USUARIO=`$ECHO $FILE | $AWK -F\; '$2 { print $1 }'`
if $FINGER -m $USUARIO 2>&1 | $GREP "Login: $USUARIO" > /dev/null 2>&1 ;then
$LOGGER -t AUTO_USERADD "Usuário $USUARIO já existe."
else
SENHA=`$ECHO $FILE | $AWK -F\; '$2 { print $2 }'`
if [ $USUARIO != " " ] ; then
if $AWK -F: '$3 < 100 {print $1}' /etc/passwd | grep $USUARIO > /dev/null ; then
$LOGGER -t AUTO_USERADD "Impossível adicionar $USUARIO. Usuário de sistema"
elif $USERADD $USUARIO ; then
if $ECHO $SENHA | $PASSWD --stdin $USUARIO ; then
$LOGGER -t AUTO_USERADD "Usuário $USUARIO adicionado com sucesso."
else
$LOGGER -t AUTO_USERADD "Erro ao setar senha do usuário: $USUARIO."
fi
else
$LOGGER -t AUTO_USERADD "Erro ao adicionar usuário: $USUARIO."
fi
fi
fi
done
}
del () {
while read FILE ; do
USUARIO=$FILE
if [ $USUARIO != " " ] ; then
if $AWK -F: '$3 < 100 {print $1}' /etc/passwd | grep $USUARIO > /dev/null ; then
$LOGGER -t AUTO_USERADD "Impossível remover $USUARIO. Usuário de sistema"
elif $FINGER -m $USUARIO 2>&1 | $GREP "Login: $USUARIO" > /dev/null 2>&1 ;then
if $USERDEL -r $USUARIO ; then
$LOGGER -t AUTO_USERADD "Usuário: $USUARIO removido com sucesso."
else
$LOGGER -t AUTO_USERADD "Erro ao remover usuário: $USUARIO."
fi
else
$LOGGER -t AUTO_USERADD "Usuário: $USUARIO não existe."
fi
fi
done
}
case "$1" in
-a)
add
;;
-r)
del
;;
*)
echo $"Usar: Não é possivel usar esse programa em modo interativo."
exit 1
esac
:0fw # Ip do servidor que irá enviar o e-mail para a adição *^Received.*192\.168\.1\.10 # E-mail do remetente *^From:.*rh@dominio.local # E-mail do destinatário, criado um alias em /etc/aliases do adicionarusuariodosistema para root *^To:.*adicionarusuariodosistema@dominio.local # Título do e-mail *^Subject:.Base de usuarios adicionar # Executar o script com o parametro -a (Adicionar usuario) | /usr/local/bin/auto_useradd.sh.x -a :0fw # Ip do servidor que irá enviar o e-mail para a adição *^Received.*192\.168\.1\.10 # E-mail do remetente *^From:.*rh@dominio.local # E-mail do destinatário, criado um alias em /etc/aliases do removerusuariodosistema para root *^To:.*removerusuariodosistema@dominio.local # Título do e-mail *^Subject:.Base de usuarios remover # Executar o script com o parametro -r (Remover usuario) | /usr/local/bin/auto_useradd.sh.x -r
adicionarusuariodosistema: root removerusuariodosistema: root
# newaliases
usuário;senhaNesse caso a senha é o número de registro do usuário O script faz uma série de verificações para validar se o usuário em questão não existe. Se ele não existir o script verifica se o login em questão não é um usuário do sistema. Caso o usuário não exista e não seja um usuário do sistema ele o adiciona
usuarioO script faz uma série de verificações para validar se o usuário em questão é existente. Se ele existir o script verifica se não é um usuário do sistema. Caso o usuário exista e não seja um usuário do sistema ele o remove
O script gera log de todas as ações em /var/log/messages e pode ser filtrado pelo parâmetro AUTO_USERADD.