11Jul

Como gerar e enviar automaticamente estatísticas de computador de e-mail

É 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.

[email protected]

# 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.

[email protected]

# 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.