Как получить обновленный IP-адрес, отправленный мне по почте в DNSExit?

Я использую DNSExit на своем сервере Ubuntu (Natty 11.04), установил rpm-файл ipUpdate и выполнил установку apt-get для chkconfig, чтобы включить ipUpdate.

Я хотел бы получать электронное письмо при каждом изменении IP-адреса, чтобы я мог использовать SSH в коробке с помощью PuTTY (потому что не могу, если не знаю текущий IP-адрес).

Текущий IP-адрес хранится в /tmp/dnsexit-ip.txt, и я бы хотел, чтобы при каждом изменении этого файла отправлять содержимое этого файла и содержимое /var/log/dnsexit.log (которое содержит историю изменений IP) на мой адрес электронной почты.

Как я могу выполнить эту задачу? Я думаю, что cronjob будет решением, но я не уверен, как это сделать.

2
задан 25 May 2012 в 18:20

2 ответа

Предварительные условия

Установите sendEmail . Это легкий почтовый клиент командной строки SMTP. Мы будем использовать его для отправки электронных писем из сценария, используя учетную запись Gmail.

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

Создайте сценарий

Создайте файл с именем « ip-notify.sh » где-нибудь, например, в каталоге « Scripts » в вашем домашняя папка; сделайте его исполняемым и откройте для редактирования.

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

Вставьте следующий текст в файл:

#!/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="someemail@gmail.com" # 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

Как только это будет сделано, сохраните и закройте файл.

Периодически запускать скрипт

Мы будем запускать этот скрипт каждые две минуты. Откройте свой кронтаб.

crontab -e

Добавьте следующую строку в конец файла:

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

Все готово!

Если все пойдет хорошо, теперь вы должны получать обновления по электронной почте, когда IP-адрес вашей машины изменится.

0
ответ дан 25 May 2012 в 18:20

Если у вас установлена ​​почта (я использую postfix ... т.е. sudo apt-get install postfix), вы можете запускать bash-скрипт в cron каждые 5 минут.

Сценарий использует 'stat', чтобы проверить, изменился ли файл за последние пять минут (300 секунд), если переменная $ diff будет равна 1.

Должно сработать нечто подобное:

#!/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="youremail@example.com"
    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
0
ответ дан 25 May 2012 в 18:20

Другие вопросы по тегам:

Похожие вопросы: