Enviar IP dinâmico por e-mail

Vamos utilizar o sSMTP e o Gmail.

Instalando e configurando o sSMTP

Vamos instalar o sSMTP, responsável por enviar os e-mails:

Instalação do sSMTP em distribuições baseadas no Debian:

# apt-get install ssmtp

Após instalar o sSMTP, precisamos configurar os arquivos “ssmtp.conf” e “revaliases”.

Editando ssmtp.conf:

# vim /etc/ssmtp/ssmtp.conf

Altere o conteúdo para:

root=postmaster
hostname=localhost
rewriteDomain=gmail.com
authUser=SEU_EMAIL@gmail.com
authPass=SUA_SENHA_DO_GMAIL
authMetod=plain
fromLineOverride=NO
mailhub=smtp.gmail.com:465
useTLS=YES

Editando “revaliases”:

# vim /etc/ssmtp/revaliases

Insira a seguinte linha no fim do arquivo:

root:SEU_EMAIL@gmail.com:smtp.gmail.com:465

* Obs.: Repare que está em caixa alta as alterações que devem ser feitas nos arquivos.

Agora, vamos configurar o script para enviar o IP.

Criando o script para enviar o IP por e-mail

Crie o arquivo “enviar_ip.sh” dentro de /etc (para ficar organizado).

Criar o arquivo:

# vim /etc/enviar_ip.sh

Insira o seguinte conteúdo:

#!/bin/bash

# Obtém o IP externo do servidor e salva na memória
IP_ANTERIOR=`cat ip.txt`
IP_ATUAL=`lynx –dump http://checkip.dyndns.org/|cut -c24-`

echo IP atual: $IP_ATUAL, IP anterior: $IP_ANTERIOR

# Verifica se IP alterou e envia um email
if [ “$IP_ATUAL” = “$IP_ANTERIOR” ]; then
echo “IP não mudou. Nada a fazer.”
exit 0

else

# Apaga o conteudo do arquivo
echo “” > ip.txt

echo “Ops, IP mudou. Enviando arquivo por email…”

# Atualiza o conteudo do arquivo
echo “$IP_ATUAL” > ip.txt

# Atutaliza o conteudo do arquivo para enviar o email
echo “Subject: [IP] NOME_DO_SERVIDOR – NOME_DO_CLIENTE” > enviar.txt
echo “From: SEU_EMAIL@gmail.com” >> enviar.txt
echo “$IP_ATUAL” >> enviar.txt

# Depois que criou o arquivo acima envia o email
ssmtp SEU_EMAIL@gmail.com < enviar.txt

fi

Obs.: Não se esqueça de salvar: wq!

Comentário sobre o script

A fato de curiosidade, vamos esclarecer as linhas do script. Se não tiver interesse, pule para a próximo passo.

  • IP_ANTERIOR=`cat ip.txt` → Coloca dentro de uma variável o último IP válido
  • IP_ATUAL=`lynx –dump http://checkip.dyndns.org/|cut -c24-` → Coloca dentro de uma variável o IP atualizado
  • echo IP atual: $IP_ATUAL, IP anterior: $IP_ANTERIOR → Compara as duas variáveis
  • if [ “$IP_ATUAL” == “$IP_ANTERIOR” ]; then → Verifica que as duas várias são iguais
    • echo “IP não mudou. Nada a fazer.”
    • exit 0 → Se forem iguais, não retorna nada e sai
  • else → Se as variáveis forem diferentes, realiza o procedimento abaixo
  • echo “” > ip.txt → Apaga o último IP do arquivo
  • echo “$IP_ATUAL” > ip.txt → Coloca o IP atualizado no arquivo
  • echo “Subject: [IP] NOME_DO_SERVIDOR – NOME_DO_CLIENTE” > enviar.txt → Coloca o assunto no arquivo “enviar.txt”
  • echo “From: SEU_EMAIL@gmail.com” >> enviar.txt → Coloca o email que envio no arquivo “enviar.txt”
  • echo “$IP_ATUAL” >> enviar.txt → Coloca o IP atualizado no arquivo “enviar.txt”
  • ssmtp SEU_EMAIL@gmail.com < enviar.txt → Envia o email com o conteúdo do arquivo “enviar.txt”
  • fi → Finalizando script

Agora devemos tornar o script executável. Criando executável:

# chmod +x /etc/enviar_ip.sh

E precisamos criar os arquivos “ip.txt” para guardar o IP atualizado e o arquivo “enviar.txt” para guardar o que será enviado por e-mail.

Criando arquivos:

# touch ip.txt
# touch enviar.txt

Agora, execute o shell script e verifique se chegou a mensagem em seu e-mail:

Executando o script:

# /etc/enviar_ip.sh

Pronto, agora só precisa agendar no Crontab quantas vezes por dia quer rodar o script, e o executar a cada hora. Ficou assim:

Agendamento para enviar e-mail com o IP:

0 * * * * root /etc/enviar_ip.sh

Deixe um comentário