Enviar IP dinâmico por e-mail
Dica publicada em Linux / Introdução
Enviar IP dinâmico por e-mail
Oi piázada...
Depois de algumas pesquisas, adaptei um script para enviar o IP dinâmico do servidor por e-mail. Uma "mão na roda" para quem administra vários servidores que NÃO tem IP dedicado.
Vamos utilizar o sSMTP e o Gmail.
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:
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.
Criar o arquivo:
# vim /etc/enviar_ip.sh
Insira o seguinte conteúdo:
Obs.: Não se esqueça de salvar: wq!
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:
Dúvidas e sugestões sempre são bem-vindas!
Depois de algumas pesquisas, adaptei um script para enviar o IP dinâmico do servidor por e-mail. Uma "mão na roda" para quem administra vários servidores que NÃO tem IP dedicado.
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
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
# 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
Dúvidas e sugestões sempre são bem-vindas!
So que no meu caso eu utlizo o sendEmail.
nao sei se vai ficar bom aqui.
#!/bin/bash
#Script para enviado de email com novo ip do servidor.
#
#Crie o arquivo /etc/interfaces e coloque a(s) interface(s) com acesso a internet, se voce tiver mais de um link, coloque
# uma interface abaixo da outra.
#ex:
#eth0
#eth1
#
#É nescessario o programa sendEmail para envio do email
# ele pode ser encontro em: http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v156.zip
#
#descompacte o arquivo sendEmail.pl em /usr/bin
#
#
HOSTNAME=`hostname`
HORA_DIA=`date +%T----%D`
##### VARIAVEIS PARA ENVIO DO EMAIL
SEND=email_enviado@email.com
SENHA=XXXXXX
EMAIL=email@email.com
SERVIDOR=1.1.1.1
#=======================================================================
if test -e /etc/interfaces ;then
echo ""
else
echo "ARQUIVO DE INTERFACES NAO EXISTE, CRIE O ARQUIVO /etc/interfaces "
exit 0
fi
cat /etc/interfaces |
while read interfaces; do
echo "Checando IP interface $interfaces"
## Pegando o IP externamente
IP=`curl -k --interface $interfaces --silent http://getip.krisk.org/`
###### Checando a existencia do conf
if test -e /tmp/"$interfaces"_ip.tmp ; then
echo "Registro de IP existente"
else
echo "Criando arquivo com registro de IP"
touch /tmp/"$interfaces"_ip.tmp
echo "$IP" > /tmp/"$interfaces"_ip.tmp
fi
##### arquivo com Ip existente
IP_INI=`cat /tmp/"$interfaces"_ip.tmp`
#### Validando o ip existente para o novo
if test "$IP" = "$IP_INI"; then
echo "Ip continua o mesmo !"
else
echo "$IP" > /tmp/"$interfaces"_ip.tmp
echo "IP Mudou, enviando email."
sendEmail.pl -f $SEND -s $SERVIDOR -t $EMAIL -m "O novo IP do servidor e: $IP. O IP antigo era: $IP_INI " -u "O Ip do servidor $HOSTNAME mudou as
$HORA_DIA " -xu $SEND -xp $SENHA -q
fi
done