如何通过 DNSExit 邮寄给我更新的 IP 地址?

如何通过 DNSExit 邮寄给我更新的 IP 地址?

我在 Ubuntu 服务器(Natty 11.04)上使用 DNSExit,并安装了ipUpdate rpm 文件并对 chkconfig 执行了 apt-get install 以启用 ipUpdate。

我希望每当 IP 地址发生变化时都能收到一封电子邮件,这样我就可以使用 PuTTY 通过 SSH 进入该框(因为除非我知道当前的 IP 地址,否则我无法做到这一点)。

当前 IP 地址存储在中/tmp/dnsexit-ip.txt,我希望每当该文件发生更改时,将该文件的内容和/var/log/dnsexit.log(包含 IP 更改的历史记录)的内容邮寄到我的电子邮件地址。

我该如何完成这项任务?我认为 cronjob 可以解决这个问题,但我不确定如何做到这一点。

答案1

先决条件

安装发电子邮件。它是一款轻量级的命令行 SMTP 电子邮件客户端。我们将使用它通过脚本使用 Gmail 帐户发送电子邮件。

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

创建脚本

创建名为“ip-通知工具“在某处,例如在”脚本“目录在您的主文件夹中;使其可执行,然后打开它进行编辑。

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="[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

完成后,保存并关闭文件。

定期运行脚本

我们将每两分钟运行一次此脚本。打开您的 crontab。

crontab -e

将以下行添加到文件底部:

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

你完成了!

如果一切顺利,当您的机器的 IP 地址发生变化时,您应该会收到电子邮件更新。

答案2

如果您安装了邮件(我使用 postfix ...即 sudo apt-get install postfix)您可以每 5 分钟在 cron 中运行一个 bash 脚本。

该脚本使用“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="[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

相关内容