Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Como enviar um e-mail via telnet no Linux

Imprimir
Avaliação do Usuário: / 7
PiorMelhor 

Imagine a seguinte situação: você precisa gerar estatísticas automáticas do seu servidor de arquivos baseado em alguma distribuição Linux, por exemplo, mostrar quantos arquivos existem nesse servidor e quanto de espaço no disco está sendo consumido. Porém você não quer ter que ficar acessando o servidor, mesmo que remotamente, para ver esses dados, prefere que eles sejam enviados por e-mail e assim você pode vê-los em casa, confortavelmente na sua mesa do escritório ou mesmo no celular.

 

Ok, vamos nos basear nessa suposição, então, primeiro você precisa de um script Shell para gerar uma estatística de arquivos no servidor. Você pode usar o que segue abaixo.


 

Esse script obtém todos os diretórios que estejam dentro do diretório servidor e monta uma estatística sobre os arquivos com as extensões doc, xls, pdf, jpg, bmp, zip, txt, bat, tif e exe constantes nele e o espaço ocupado por eles.


 

echo --------------------------------

echo "TOTAL GERAL"

a=`du --total -h /servidor/ | wc -l`

o=`du --total -h /servidor/ | grep total | cut -d "t" -f1`

echo "Numero de arquivos: " $a

echo "Ocupacao: " $o

echo ""

for arquivos in ".doc" ".xls" ".pdf" ".jpg" ".bmp" ".zip" ".txt" ".bat" ".tif" ".exe"; do

a=`ls -lR /servidor/ | grep \$arquivos | wc -l`

echo $a " arquivos com extensao " $arquivos

done

echo ""

echo --------------------------------

df -h

echo ""

p=`ls -l /servidor/ | cut -c54-`

for pastas in $p; do

echo --------------------------------

echo "Estatistica para a pasta" $pastas

a=`du --total -hm /servidor/$pastas | wc -l`

o=`du --total -hm /servidor/$pastas | grep total | cut -d "t" -f1`

echo "Numero de arquivos: " $a

echo "Ocupacao (em MiB): " $o

echo ""

for arquivos in ".doc" ".xls" ".pdf" ".jpg" ".bmp" ".zip" ".txt" ".bat" ".tif" ".exe"; do

a=`ls -lR /servidor/$pastas | grep \$arquivos | wc -l`

echo $a " arquivos com extensao " $arquivos

done

done


 

Você pode salvar esse script com o nome de estatistica.sh, para executá-lo você precisa dar permissões de execução:


 

chmod +x estatistica.sh


 

Para executar, por exemplo:


 

./estatistisca.sh > mensagem.txt


 

Com isso todos os dados acabarão gravados no arquivo mensagem.txt.


 

Agora vamos escrever o script para o envio do e-mail via telnet, no console de uma distribuição Linux.


 

Como não temos como digitar usuário e senha para o servidor de e-mail e, obviamente, que ele não aceitará texto puro para isso precisamos gerar a autenticação criptografada para o servidor de e-mail. Para isso execute o seguinte comando:


 

echo -ne 'usuario\0usuario\0senha' | openssl base64 > autenticacao.txt


 

Com isso criptografamos seu usuário e senha, no formato para o servidor de e-mail, com criptografia ssl de 64bits. Caso não tenha certeza se é necessário fazer isso, consulte se provedor. A chave criptográfica ficará guardada no arquivo autenticação.txt.


 

Crie um arquivo chamado servidor.txt e nele coloque o endereço do seu servidor SMTP, como por exemplo:


 

smtp.provedor.com.br


 

Agora crie um arquivo chamado lista_email.txt que deverá conter em cada linha um endereço de e-mail para o qual você deseja enviar a mensagem.


 

Crie um arquivo chamado email.txt e nele coloque o endereço de e-mail do remetente (seu e-mail).


 

Finalmente vamos ao script para o envio do e-mail, grave-o como envia_email.sh:


 

#!/bin/bash

senha=`cat autenticacao.txt`

(echo HELO `cat servidor.txt`; sleep 1

echo AUTH PLAIN `cat autenticacao.txt`; sleep 3

echo 'MAIL FROM: <`cat email.txt`>'; sleep 1

for email in `cat lista_email.txt`;do echo RCPT TO: \<$email\>; done;

echo 'DATA'; sleep 1

echo 'MIME-Version: 1.0'; sleep 1

echo 'FROM: <`cat email.txt`>';

echo 'TO: <>';

echo 'SUBJECT: Teste e-mail via telnet';

echo 'Content-type: text/html; charset=ISO-8859-1; format=flowed';

echo '';

echo '';

cat mensagem.txt;

echo '';

echo '.'; sleep 2

echo 'QUIT';) | telnet `cat servidor.txt` 25


Lembre-se de dar permissão de execução para conseguir rodá-lo.

Os detalhes:


senha=`cat autenticacao.txt`


Obtém o conteúdo do arquivo autenticação.txt que deverá ter o seus dados de acesso ao servidor SMTP criptografados com SSL de 64 bits.

 


telnet `cat servidor.txt` 25


Conecta via telnet, pela porta 25, ao endereço constante no arquivo servidor.txt (seu servidor SMTP).

 


(echo HELO `cat servidor.txt`; sleep 1

echo AUTH PLAIN `cat autenticacao.txt`; sleep 3

echo 'MAIL FROM: <`cat email.txt`>'; sleep 1

for email in `cat lista_email.txt`;do echo RCPT TO: \<$email\>; done;

echo 'DATA'; sleep 1

echo 'MIME-Version: 1.0'; sleep 1

echo 'FROM: <`cat email.txt`>';

echo 'TO: <>';

echo 'SUBJECT: Teste e-mail via telnet';

echo 'Content-type: text/html; charset=ISO-8859-1; format=flowed';

echo '';

echo '';

cat mensagem.txt;

echo '';

echo '.'; sleep 2

echo 'QUIT';)


Envia os comandos no formato SMTP (Simple Mail Transfer Protocol – veja em http://www.rfc-editor.org/rfc/std/std10.txt)

Para receber periodicamente os dados agende no crontab a execução do script estatistica.sh e do envia_email.sh.

Adicionar comentário


Código de segurança
Atualizar

You are here: