É importante verificar vários dados de registro e estatísticas em seu servidor todos os dias, mas está se tornando tedioso. Não seria bom receber um único e-mail com todos os destaques a cada dia, para que você nem precise entrar no servidor para verificar se há problemas? Este guia mostrará como configurar e-mails automatizados no Linux e Windows.
Estaremos cobrindo isso especificamente para Ubuntu e Windows 8.1, com o Gmail sendo usado como o servidor de e-mail de onde os e-mails são enviados. Se você tem outra versão do Linux ou Windows, ou prefere usar algum outro serviço de e-mail, as instruções aqui devem ser facilmente adaptáveis.
Emails automatizados no Linux
Vamos usar dois pacotes diferentes para fazer isso, ssmtp e mailutils, portanto, instale ambos com o seguinte comando:
$ sudo apt-get install ssmtp mailutils
Depois de instalados, precisamos fazer algumas alterações no arquivo de configuração SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Edite o arquivo com essas alterações (é seguro apenas apagar todo o texto do arquivo e copiar / colar essas configurações, se desejar):
# Este endereço receberá os e-mails, então insira seu próprio e-mail aqui se quiser recebê-los.
# Especifique o servidor de e-mail aqui (deixe como está se estiver usando o Gmail).
mailhub=smtp.gmail.com:587
# O nome de domínio de onde o e-mail virá.
rewriteDomain=gmail.com
# O endereço de e-mail de onde esses e-mails devem ser.
# Configurações SSL / TLS, necessárias para o Gmail e a maioria dos outros servidores de e-mail.
UseTLS = Sim
UseSTARTTLS = Sim
# O nome de usuário e a senha da sua conta do Gmail.
AuthUser = nome de usuário
AuthPass = senha
# Permitir a possibilidade de especificar um endereço de remetente diferente do acima.
FromLineOverride = yes
Quando terminar de editar o arquivo, você desejará alterar as permissões, já que sua senha do Gmail é armazenada em texto simples.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
É sempre mais seguro tornar o root o proprietário do arquivo, mas então teríamos que usar o comando sudo em nosso script e ele nos solicitaria uma senha, anulando assim o propósito de automatizar todo o processo.
Se você estiver usando um servidor compartilhado e estiver preocupado com a possibilidade de sua senha ser armazenada em texto simples e legível pelo root, crie uma conta do Gmail descartável ou use um servidor de e-mail que não requeira nenhum tipo de autenticação.
Para ter certeza de que tudo está configurado corretamente, vamos tentar um e-mail de teste:
$ echo "Teste" | mail -s "Testando configuração de e-mail" nomedeusuá[email protected]
“Testing” estará no corpo do e-mail e o assunto será “Testing mail setup”. Verifique seu e-mail para ter certeza de que o recebeu.
Escrevendo um script para os e-mails
Agora que podemos enviar e-mails da linha de comando, vamos escrever um script que nos enviará algumas informações básicas sobre nosso sistema.
#! / Bin / Bash
# Verifique o espaço no disco rígido
echo "Espaço no disco rígido:"> /home/geek/email.txt
df -h >> /home/geek/email.txt
# Liste os usuários que estão logados
echo "Usuários atualmente conectados:" >> /home/geek/email.txt
quem >> /home/geek/email.txt
# Lista os processos em execução no momento
echo "Processos em execução:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Envie o email
cat /home/geek/email.txt | mail -s "Informações diárias do servidor" nomedeusuá[email protected]
# Exclua o arquivo que criamos
rm /home/geek/email.txt
Obviamente, você pode obter muito mais detalhes com o seu script e até mesmo tornar a formatação um pouco mais agradável, mas é assim que a saída aparece em nosso e-mail:
Agora que o script está escrito e testado, podemos usar o cron para executá-lo automaticamente na mesma hora todos os dias. Neste exemplo, configuraremos o e-mail para ser enviado às 2h todas as manhãs, para que possamos analisar os dados mais tarde naquele dia.
$ crontab -e
Para e-mails das 2h, adicione:
0 2 * * * /home/geek/script.sh
Escrevemos um artigo inteiro sobre arquivos crontab se precisar de mais ajuda com esta parte.
Emails automatizados no Windows
O envio de e-mails na linha de comando é possível por meio do PowerShell, mas descobrimos que implementar essa funcionalidade é muito mais fácil com aplicativos de terceiros, especialmente ao usar o Gmail. Enviar email é um programa gratuito disponível para Windows que torna a integração com o Windows Task Scheduler e Gmail uma brisa. Clique no link acima para baixar a cópia mais recente e certifique-se de obter a versão compatível com TLS.
Depois de fazer o download de SendEmail, extraia o arquivo zip e coloque o conteúdo em algum lugar onde possa armazená-lo pelo tempo que planeja enviar e-mails automatizados. Neste exemplo, vamos apenas armazenar o programa em C: \ SendEmail
Vamos testar SendEmail para ter uma ideia rápida de como funciona. Abra um prompt de comando digitando cmd no menu Iniciar ou Executar (Ctrl + R).
Com o prompt de comando aberto, use o comando change directory para navegar até onde você armazenou os arquivos SendEmail.
cd C:\SendEmail
Agora podemos tentar enviar um e-mail de teste com o seguinte comando:
sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu nome de usuário -xp senha -u "Assunto do email de teste" -m "Este é um email de teste."
Obviamente, substitua “nome de usuário” e “senha” pelas credenciais de sua conta antes de executar o comando.
Aqui está o que o comando acima realmente faz:
enviar email
executa o programa.
-f
- a partir do endereço
-t
- endereçar
-s
- servidor SMTP
-moeda
- Nome de usuário da conta
-xp
- Senha da conta
-você
- assunto do email
-m
- texto do corpo do e-mail
Verifique sua caixa de entrada para certificar-se de que recebeu o e-mail de teste e, em seguida, podemos prosseguir com a redação de um script que nos enviará informações do servidor.
Escrevendo um script para os e-mails
Para obter o máximo de nosso script, vamos escrevê-lo para PowerShell. Abra o Windows PowerShell ISE digitando powershell_ise.exe em um prompt Executar (Ctrl + R).
No lado direito da janela do PowerShell ISE, você pode listar todos os comandos que o PowerShell é capaz de executar. Isso deve ser um bom começo para gerar os tipos de informações que você precisa reportar. Em seu script, você também pode chamar programas de terceiros para gerar informações também (ou seja, SendEmail é um aplicativo de terceiros, mas o PowerShell e o cmd podem usá-lo para realizar tarefas que normalmente não podem).
Para o nosso script de exemplo, verificaremos o uso atual do disco da unidade C, mostraremos os processos em execução no momento e todos os arquivos que estão sendo compartilhados na rede.
# Verifique o espaço no disco rígido
echo "C: Uso do Drive:"> C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" | Select-Object Size, FreeSpace >> C: \ SendEmail \ info.txt
# Lista os processos em execução no momento
echo "Processos em execução:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Lista os arquivos / pastas que estão sendo compartilhados no momento
echo "compartilhamentos SMB:" >> C: \ SendEmail \ info.txt
get-smbshare >> C: \ SendEmail \ info.txt
# Envie o email
digite C: \ SendEmail \ info.txt | C: \ SendEmail \ sendEmail -f nomedeusuá[email protected] -t nomedeusuá[email protected] -s smtp.gmail.com:587 -xu nome de usuário -xp senha -u "Informações diárias do servidor"
# Exclua o arquivo que criamos
rm C:\SendEmail\info.txt
Nesse script, várias informações são enviadas para C: \ SendEmail \ info.txt e, em seguida, o texto desse documento é enviado para nós antes de ser excluído. Salve seu script com uma extensão de arquivo ps1 (arquivo PowerShell).
Com o seu script concluído, execute um teste rápido em um prompt de execução para verificar se ele está funcionando corretamente.
Basta usar o
PowerShell
comando com um
-Arquivo
argumento e especifique o caminho para o seu script.
powershell -file "c: \ SendEmail \ daily-email.ps1"
Verifique sua caixa de entrada para ter certeza de que recebeu o e-mail - se não, verifique se há erros de sintaxe em seu script. Esta é a aparência do e-mail gerado em nosso script de exemplo:
Você pode brincar com a formatação (como ecoar linhas vazias entre o texto) para torná-la mais bonita no seu dispositivo ou, melhor ainda, pode usar um programa de terceiros que produzirá as informações necessárias em um formato mais legível do que o Windows ( o processo de script ainda será o mesmo).
Depois de resolver os problemas em seu script, você pode usar o Windows Task Scheduler para automatizá-lo. Abra o Windows Task Scheduler por meio do menu Iniciar.
Com o Agendador de tarefas aberto, selecione Ação> Criar tarefa básica.
Nomeie essa tarefa como “Script de e-mail diário” e clique em Avançar. Na próxima tela, selecione a frequência com que deseja que seu script de e-mail seja executado, provavelmente diariamente. Em seguida, escolha o horário em que deseja que o script seja executado e clique em próximo.
Agora você deve estar na parte “Ação” do assistente, selecione “Iniciar um Programa” e digite o mesmo texto que inserimos no prompt Executar anteriormente para testar nosso script.
Clique em Avançar e em Sim nesta janela:
Clique em Concluir no último menu e você concluiu o agendamento de seus e-mails automáticos.