11Jul
É importante verificar vários dados de log e estatísticas em seu servidor todos os dias, mas torna-se tedioso. Não seria bom receber um único e-mail com todos os destaques a cada dia, então você nem precisa entrar no servidor para verificar problemas? Este guia irá mostrar-lhe como configurar e-mails automatizados no Linux e no Windows.
Vamos abordar especificamente isso para Ubuntu e Windows 8.1, com o Gmail sendo usado como o servidor de e-mail do qual o correio é enviado. Se você tem outra versão do Linux ou do Windows, ou prefere usar algum outro serviço de e-mail, as instruções aqui devem ser facilmente adaptáveis.
E-mails automatizados no Linux
Vamos usar dois pacotes diferentes para realizar isso, ssmtp e mailutils, então instale ambos com o seguinte comando:
$ sudo apt-get install ssmtp mailutils
Uma vez instalados, precisamospara fazer algumas alterações no arquivo de configuração SSMTP:
$ sudo vi /etc/ssmtp/ ssmtp.conf
Edite o arquivo com essas alterações( é seguro simplesmente apagar todo o texto no 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 desejar recebê-los.
# Especifique o servidor de e-mail aqui( deixe como está se você estiver usando o Gmail).
mailhub = smtp.gmail.com: 587
# O nome de domínio do qual o correio virá.
rewriteDomain = gmail.com
# O endereço de e-mail de que esses e-mails devem ser.
# Configurações SSL / TLS, necessárias para o Gmail e a maioria dos outros servidores de correio.
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 habilidade de especificar um endereço diferente do anterior.
FromLineOverride = sim
Quando terminar de editar o arquivo, você deseja alterar as permissões, pois sua senha do Gmail está armazenada em texto simples.
$ sudo chmod 640 /etc/ssmtp/ ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ ssmtp.conf
Sempre é mais seguro criar o proprietário do arquivo, mas então teríamos que usar o comando sudo no nosso script e serianos solicita uma senha, derrubando assim a finalidade de automatizar todo esse processo.
Se você estiver usando um servidor compartilhado e está preocupado com a sua senha sendo armazenada em texto simples e legível pela raiz, crie uma conta descartável do Gmail ou use um servidor de e-mail que não exija nenhum tipo de autenticação em primeiro lugar.
Para garantir que tudo esteja configurado corretamente, vamos tentar um e-mail de teste:
$ echo "Testing" |mail -s "Testando a configuração do correio" [email protected]
"Teste" estará no corpo do e-mail e o assunto será "Testando a configuração do correio". Verifique seu e-mail para garantir que você o tenha recebido.
Escrevendo um Script para Emails
Agora que podemos enviar e-mails a partir 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:" & gt;/home/geek/ email.txt
df -h & gt; & gt;/home/geek/ email.txt
# Listar os usuários que estiverem logados
echo "Usuários atualmente logados:" & gt; & gt;/home/geek/ email.txt
who & gt; & gt;/home/geek/ email.txt
# Listar processos atualmente em execução
echo "Execução de processos:" & gt; & gt;/home/geek/ email.txt
ps -e & gt; & gt;/home/geek/ email.txt
# Envie o email
cat /home/geek/ email.txt |mail -s "Informações diárias do servidor" [email protected]
# Excluir o arquivo que criamos
rm /home/geek/ email.txt
Obviamente, você pode obter muito mais em profundidade com seu script e até mesmo tornar a formatação um pouco mais agradável, masEste é o aspecto da saída em nosso e-mail:
Agora que o script está escrito e testado, podemos usar o cron para executá-lo automaticamente ao mesmo tempo todos os dias. Neste exemplo, vamos configurar o e-mail para ser enviado às 2:00 da manhã todas as manhãs, para que possamos passar pelos dados mais tarde nesse dia.
$ crontab -e
Para e-mails de 2:00 da manhã, adicione:
0 2 * * * /home/geek/ script.sh
Escrevemos um artigo inteiro em arquivos crontab se precisar de mais ajuda com esta parte. E-mails automatizados
no Windows
O envio de e-mails na linha de comando é possível através do PowerShell, mas descobrimos que implementar esta funcionalidade é muito mais fácil com aplicativos de terceiros, especialmente quando usa o Gmail. SendEmail é um programa gratuito disponível para o Windows que torna a integração com o Windows Task Scheduler e o Gmail uma brisa. Clique no link acima para baixar a última cópia, e certifique-se de que adquire a versão suportada pelo TLS.
Depois de baixar o SendEmail, extraia o arquivo zip e coloque os conteúdos em algum lugar que você possa armazená-los, desde que você planeje enviar emails automatizados. Neste exemplo, vamos apenas armazenar o programa em C: \ SendEmail
Vamos testar o SendEmail para ter uma sensação rápida de como ele 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 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 username -xpsenha -u "Testar assunto de e-mail" -m "Este é um e-mail de teste".
Obviamente, substitua "nome de usuário" e "senha" pelas credenciais da sua conta antes de executar o comando.
Aqui está o que o comando acima realmente faz:
sendEmail executa o programa.
-f - do endereço
-t - para endereço
-s - servidor SMTP
-xu - nome de usuário da conta
-xp - senha da conta
-u - assunto do e-mail
-m - texto do corpo do e-mail
Verifique sua caixa de entrada para ter certezavocê recebeu o e-mail de teste, e então podemos seguir a escrever um script que nos enviará informações do servidor.
Escrevendo um Script para Emails
Para tirar o máximo proveito do nosso script, vamos escrevê-lo para o PowerShell. Abra o Windows PowerShell ISE digitando powershell_ise.exe em um prompt Run( Ctrl + R).
No lado direito da janela do PowerShell ISE, você pode listar todos os comandos que o PowerShell é capaz de executar. Isso deve dar-lhe um bom começo na geração dos tipos de informações que você precisa reportar. No seu script, você também pode ligar para programas de terceiros para a saída de informações também( ou seja, SendEmail é uma aplicação de terceiros, mas o PowerShell e o cmd podem usá-lo para realizar tarefas que normalmente não podem).
Para o nosso exemplo de script, verificaremos o uso atual do disco C, mostraremos os processos atualmente em execução e mostraremos todos os arquivos que estão sendo compartilhados pela rede.
# Verifique o espaço no disco rígido
eco "C: Drive Usage:" & gt;C: \ SendEmail \ info.txt
Get-WmiObject win32_LogicalDisk -Filter "DeviceID = 'C:'" |Selecione-Tamanho do objeto, FreeSpace & gt; & gt;C: \ SendEmail \ info.txt
# Listar processos atualmente em execução
echo "Execução de processos:" & gt; & gt;C: \ SendEmail \ info.txt
get-process & gt; & gt;C: \ SendEmail \ info.txt
# Lista os arquivos / pastas atualmente compartilhados.
echo "compartilhamentos SMB:" & gt; & gt;C: \ SendEmail \ info.txt
get-smbshare & gt; & gt;C: \ SendEmail \ info.txt
# Envie o email
tipo C: \ SendEmail \ info.txt |C: \ SendEmail \ sendEmail -f [email protected] -t [email protected] -s smtp.gmail.com:587 -xu username -xp password -u "Informações diárias do servidor"
# Excluir o arquivo que fizemos
rm C: \ SendEmail \ info.txt
Neste script, várias informações são enviadas para C: \ SendEmail \ info.txt e, em seguida, o texto nesse documento está enviado por email antes de ser excluído. Salve seu script com uma extensão de arquivo ps1( arquivo PowerShell).
Com o script concluído, execute um teste rápido a partir de um prompt Run para verificar se ele está funcionando corretamente.
Basta usar o comando powershell com um argumento de arquivo e especificar o caminho para seu script.
powershell -file "c: \ SendEmail \ daily-email.ps1"
Verifique a sua caixa de entrada para se certificar de que recebeu o e-mail - se não, procure o seu script para erros de sintaxe. Veja o que o e-mail gerado do nosso script de exemplo se parece:
Você pode brincar com a formatação( como fazer eco de linhas vazias entre texto) para torná-lo mais legal em seu dispositivo, ou melhor ainda, você pode usar um programa de terceiros que iráexiba 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 ter elaborado as curvas no seu script, você pode usar o Windows Task Scheduler para automatizá-lo. Abra o Windows Task Scheduler através do menu Iniciar.
Com o Agendador de Tarefas aberto, selecione Ação & gt;Criar Tarefa Básica.
Nomeie essa tarefa como "Script de email diário" e clique em próximo. Na próxima tela, selecione a frequência com a qual você deseja que seu script de e-mail seja executado, provavelmente diariamente. Em seguida, escolha a hora 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 mais cedo para testar nosso script.
Acerte em seguida e, em seguida, clique em Sim nesta janela:
Clique em Concluir no último menu, e você terminou de agendar seus e-mails automáticos.