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:
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:
* 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:
# 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: