Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Curso de Inglês Online

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Adição automática de usuário via e-mail

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.

Cenário

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.

  1. O pessoal do RH cadastra o novo funcionário.

  2. O sistema envia um e-mail para uma determinada conta com o primeiro nome do usuário e o número do registro na empresa.

O script

  • Crie o seguinte shell script para a adição dos usuários.

  • Copie o script para /usr/local/bin/auto_adduser.sh

    # cp auto_adduser.sh /usr/local/bin/auto_adduser.sh

  • Torne-o executável

# chmod +x /usr/local/bin/auto_adduser.sh

  #!/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

Procmail

  • Para que funcionasse corretamente foi necessário criar o arquivo .procmailrc para o usuário root em /root/.procmailrc

  • O procmail vai chamar o script para a adição do usuário.
  :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

Aliases

  • Criado os seguintes aliases apontando para o usuário root em /etc/aliases

      adicionarusuariodosistema:      root
      removerusuariodosistema:        root
    

  • Executado o comando abaixo para ativar os novos aliases

      # newaliases
    

Colocando em funcionamento

  • Agora basta enviar um e-mail com as segintes características para que o script funcione.

  1. Para adicionar um usuário o e-mail deve obedecer as regras do procmail como segue:
  • O servidor que envia o e-mail para o sistema deverá enviar o e-mail com o IP 192.168.1.10
  • O e-mail do remetente tem que ser rh@dominio.local
  • O e-mail do destinatário tem que ser o adicionarusuariodosistema@dominio.local
  • O título do e-mail tem que ser: Base de usuarios adicionar
  • No corpo do e-mail tem que conter usuário e senha separados por ";" como segue:
      usuário;senha
    
    Nesse 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

  1. Para remover um usuário o e-mail deve obedecer as regras do procmail como segue:
  • O servidor que envia o e-mail para o sistema deverá enviar o e-mail com o IP 192.168.1.10
  • O e-mail do remetente tem que ser rh@dominio.local
  • O e-mail do destinatário tem que ser o removerusuariodosistema@dominio.local
  • O título do e-mail tem que ser: Base de usuarios remover
  • No corpo do e-mail tem que conter somente o login do usuário como segue:
      usuario
    
    O 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

Observações

  • Todos os parâmetros de verificação citados acima poderam ser alterados conforme necessidade, basta lembrar de alterar no procmailrc.
  • Os e-mails citados são grandes para dificultar o acesso a funcionalidade por quem não conhece o sistema.
  • O script só será executado se atender todas as verificações citadas acima.

Log

O script gera log de todas as ações em /var/log/messages e pode ser filtrado pelo parâmetro AUTO_USERADD.

Veja a relação completa dos artigos de Smailli Hemori Moraes

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1679 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Guia Manga Universo