Como obter o endereço IP atualizado enviado para mim no DNSExit?

2

Estou usando o DNSExit no meu servidor Ubuntu (Natty 11.04) e instalei o arquivo ipUpdate rpm e fez uma instalação do apt-get para o chkconfig para ativar o ipUpdate.

Eu gostaria de receber um email sempre que o endereço IP mudar, para que eu possa usar o SSH na caixa usando o PuTTY (porque eu não posso a menos que eu saiba o endereço IP atual).

O endereço IP atual é armazenado em /tmp/dnsexit-ip.txt e eu gostaria de, sempre que o arquivo fosse alterado, enviar o conteúdo desse arquivo e o conteúdo de /var/log/dnsexit.log (que contém um histórico das alterações de IP) para o meu endereço de e-mail.

Como posso realizar essa tarefa? Estou pensando que um cronjob será a solução, mas não sei como fazer isso.

    
por rishimaharaj 25.05.2012 / 15:40

2 respostas

2

Pré-requisitos

Instale sendEmail . É um cliente de e-mail SMTP de linha de comando leve. Vamos usá-lo para enviar e-mails de um script, usando uma conta do Gmail.

sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl

Crie o script

Crie um arquivo chamado " ip-notify.sh " em algum lugar, por exemplo, em um diretório " Scripts " em sua pasta pessoal; torne-o executável e abra-o para edição.

mkdir -p ~/Scripts && touch ~/Scripts/ip-notify.sh && chmod a+x ~/Scripts/ip-notify.sh && gedit ~/Scripts/ip-notify.sh

Insira o seguinte texto no arquivo:

#!/bin/bash

# Modify the following values!

  SENDERNAME="Computer" # This is the name that will show in the 'From' field. Purely esthetic.
  RECIPIENTNAME="Your Name" # This is the name that will show in the 'To' field. Also purely esthetic.
  GMAILADDRESS="[email protected]" # This is your Gmail address.
  GMAILUSER="someemail" # This is your Gmail username, without the '@gmail.com' part.
  GMAILPASS="password" # This is your Gmail password.

# You can stop modifying here

DIR=/tmp/
CURIP=dnsexit-ip.txt
IPLOG=/var/log/dnsexit.log
SMTPSERVER="smtp.gmail.com:587"

if [[ $(find $DIR -mmin -2 -name $CURIP) ]];
then
        echo "$CURIP has been modified in the last two minutes."
        # Send an email
        sendemail -u "IP Address" -m "IP address has changed!" -f "$SENDERNAME <$GMAILADDRESS>" -t "$RECIPIENTNAME <$GMAILADDRESS>" -s $SMTPSERVER -xu $GMAILUSER -xp $GMAILPASS -a $DIR$CURIP $IPLOG
fi

Depois disso, salve e feche o arquivo.

Execute o script periodicamente

Nós vamos executar este script a cada dois minutos. Abra seu crontab.

crontab -e

Adicione a seguinte linha ao final do arquivo:

*/2 * * * * bash ~/Scripts/ip-notify.sh

Você terminou!

Se tudo correr bem, você deverá receber atualizações por e-mail quando o endereço IP da sua máquina mudar.

    
por SirCharlo 25.05.2012 / 17:18
1

Se você tiver um e-mail instalado (eu uso o postfix ... ou seja, o sudo apt-get instale o postfix) você pode executar um script bash no cron a cada 5 minutos.

O script usa 'stat' para verificar se o arquivo mudou nos últimos cinco minutos (300 segundos) se a variável $ diff for igual a 1.

Algo como isso deve funcionar:

#!/bin/bash
filemtime='stat -c %Y /tmp/dnsexit-ip.txt'
currtime='date +%s'
diff=$(( (currtime - filemtime) / 300 ))
x=1

if [ $diff -eq  $x ]
  then
    SUBJECT="DCHP CHANGE"
    EMAIL="[email protected]"
    EMAILMESSAGE="/tmp/emailmessage.txt"

    echo "Contents of dnsexit-ip.txt" >$EMAILMESSAGE
    cat /tmp/dnsexit-ip.txt >> $EMAILMESSAGE
    echo "Contents of dnsexit.log" >>$EMAILMESSAGE
    cat /var/log/dnsexit.log >> $EMAILMESSAGE

    sudo /usr/bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
 fi
    
por paradrupal 25.05.2012 / 17:58