Como gerar automaticamente e enviar por e-mail as estatísticas do computador
É importante verificar vários dados e estatísticas de log no seu servidor todos os dias, mas isso é entediante. Não seria bom receber um único e-mail com todos os destaques todos os dias, para que você nem precise entrar no servidor para verificar se há problemas? Este guia mostrará como configurar e-mails automatizados no Linux e no Windows.
Cobriremos especificamente isso para o Ubuntu e o Windows 8.1, com o Gmail sendo usado como o servidor de email do qual o email é enviado. 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.
E-mails automatizados no Linux
Vamos usar dois pacotes diferentes para realizar isso, ssmtp e mailutils, então instale os dois com o seguinte comando:
$ sudo apt-get instala ssmtp mailutils
Uma vez instalados, precisamos fazer algumas alterações no arquivo de configuração do SSMTP:
$ sudo vi /etc/ssmtp/ssmtp.conf
Edite o arquivo com essas alterações (é seguro apagar apenas todo o texto do arquivo e copiar / colar essas configurações, se desejar):
# Esse endereço receberá os e-mails, então insira seu próprio e-mail aqui se quiser recebê-los.
# Especifique o servidor de email aqui (deixe como está se você estiver usando o Gmail).
mailhub = smtp.gmail.com: 587
# O nome de domínio do qual o email virá.
rewriteDomain = gmail.com
# O endereço de e-mail do qual esses e-mails devem estar.
# Configurações de SSL / TLS, necessárias para o Gmail e a maioria dos outros servidores de e-mail.
UseTLS = Yes
UseSTARTTLS = Sim
# O nome de usuário e a senha da sua conta do Gmail.
AuthUser = nome de usuário
AuthPass = senha
# Permitir a capacidade de especificar um endereço diferente daquele acima.
FromLineOverride = yes
Quando você terminar de editar o arquivo, altere as permissões, pois a senha do Gmail é armazenada em texto sem formatação.
$ sudo chmod 640 /etc/ssmtp/ssmtp.conf
$ sudo chown username.username /etc/ssmtp/ssmtp.conf
É sempre mais seguro tornar root o dono do arquivo, mas então teríamos que usar o comando sudo em nosso script e isso nos levaria a uma senha, derrotando assim o propósito de automatizar todo esse processo..
Se você estiver usando um servidor compartilhado e estiver preocupado com a senha armazenada em texto sem formatação e legível pelo root, 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 email de teste:
$ echo "Teste" | mail -s "Testando configuração de correio" [email protected]
"Teste" estará no corpo do e-mail e o assunto será "Testando configuração de e-mail". Verifique seu e-mail para confirmar se você o recebeu.
Escrevendo um script para os e-mails
Agora que podemos enviar e-mails a partir da linha de comando, vamos escrever um script que nos envie algumas informações básicas sobre o 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
# Listar os usuários que estão conectados
echo "Usuários atualmente logados:" >> /home/geek/email.txt
quem >> /home/geek/email.txt
# Listar processos atualmente em execução
echo "Executando processos:" >> /home/geek/email.txt
ps -e >> /home/geek/email.txt
# Envie o email
gato /home/geek/email.txt | mail -s "Informações diárias do servidor" [email protected]
# Apague o arquivo que criamos
rm /home/geek/email.txt
Obviamente, você pode aprofundar muito o seu script e até tornar a formatação um pouco mais agradável, mas é assim que a saída se parece em nosso email:
Agora que o script foi escrito e testado, podemos usar o cron para executá-lo automaticamente na mesma hora todos os dias. Neste exemplo, vamos configurar o email para ser enviado às 02:00 todas as manhãs, para que possamos percorrer os dados mais tarde naquele dia.
$ crontab -e
Para e-mails de 2:00, adicione:
0 2 * * * /home/geek/script.sh
Nós escrevemos um artigo inteiro sobre arquivos crontab se você precisar de mais ajuda com esta parte.
E-mails 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. O SendEmail é um programa gratuito disponível para Windows que facilita a integração com o Agendador de Tarefas do Windows e com o Gmail. Clique no link acima para baixar a cópia mais recente e certifique-se de pegar a versão suportada pelo TLS.
Depois de fazer o download do SendEmail, extraia o arquivo zip e coloque o conteúdo em algum lugar no qual possa armazená-lo enquanto você planeja enviar e-mails automatizados. Neste exemplo, vamos apenas armazenar o programa em C: \ SendEmail
Vamos testar o 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 para onde você armazenou os arquivos SendEmail.
cd C: \ SendEmail
Agora podemos tentar enviar um email de teste com o seguinte comando:
sendEmail -f nome_do_usuá[email protected] -t nomedeusuá[email protected] -s smtp.gmail.com:587 -xu nome_do_usuário -xp senha -u "Teste assunto do e-mail" -m "Este é um e-mail de teste."
Obviamente, substitua “username” e “password” pelas credenciais da sua conta antes de executar o comando.
Veja o que o comando acima realmente faz:
enviar email
executa o programa.
-f
- a partir do endereço
-t
- endereçar
-s
- Servidor SMTP
-xu
- Nome de usuário da conta
-xp
- Senha da conta
-você
- assunto do email
-m
- texto do corpo do email
Verifique sua caixa de entrada para verificar se você recebeu o e-mail de teste e, em seguida, podemos passar a escrever um script que nos enviará informações do servidor.
Escrevendo um script para os e-mails
Para obter o máximo do nosso script, vamos escrevê-lo para o PowerShell. Abra o Windows PowerShell ISE digitando powershell_ise.exe em um prompt Executar (Ctrl + R).
No lado direito da janela ISE do PowerShell, você pode listar todos os comandos que o PowerShell é capaz de executar. Isso deve lhe dar um bom começo na geração dos tipos de informação que você precisa reportar. Em seu script, você também pode chamar programas de terceiros para gerar informações também (por exemplo, o SendEmail é um aplicativo de terceiros, mas o PowerShell e o cmd podem usá-lo para realizar tarefas que normalmente não conseguem).
Para nosso script de exemplo, verificaremos o uso atual de disco da unidade C, mostraremos os processos atualmente em execução e mostraremos todos os arquivos que estão sendo compartilhados atualmente pela 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:'" | Tamanho do objeto selecionado, FreeSpace >> C: \ SendEmail \ info.txt
# Listar processos atualmente em execução
echo "Executando processos:" >> C: \ SendEmail \ info.txt
get-process >> C: \ SendEmail \ info.txt
# Listar os arquivos / pastas atualmente compartilhados
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 do servidor diário"
# Apague o arquivo que fizemos
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 por e-mail para nós 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 de execução para garantir que ele esteja funcionando corretamente.
Basta usar o PowerShell
comando com um -Arquivo
argumentar e especificar o caminho para o seu script.
PowerShell -file "c: \ SendEmail \ daily-email.ps1"
Verifique sua caixa de entrada para verificar se você recebeu o e-mail. Se não, examine o script em busca de erros de sintaxe. Veja como o e-mail gerado do nosso script de exemplo se parece:
Você pode brincar com a formatação (como ecoar linhas vazias entre texto) para torná-la mais agradável em seu dispositivo ou, melhor ainda, 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).
Uma vez que você trabalhou fora as torções no seu script, você pode usar o Agendador de Tarefas do Windows para automatizá-lo. Abra o Agendador de Tarefas do Windows através do menu Iniciar.
Com o Agendador de Tarefas aberto, selecione Ação> Criar Tarefa Básica.
Nomeie essa tarefa como algo como “Script de email diário” e clique em próximo. Na próxima tela, selecione a frequência com a qual você gostaria que seu script de e-mail fosse executado, provavelmente diariamente. Em seguida, escolha a hora em que você 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 antes para testar nosso script.
Clique em seguinte e, em seguida, clique em Sim nesta janela:
Clique em Concluir no último menu e pronto para agendar seus e-mails automáticos.