Alv*_*var 8 server email dynamic-ip
我正在设置一个没有静态全局 IP 的 Web 服务器。它将在我父母的家里,当全局 IP 更改时,我将无法通过 SSH 访问它。每次重新启动路由器时,全局 IP 都会更改,就像每月发生一次一样。
我需要一个脚本,每次全局 IP 更改时都会向我发送电子邮件。这样我就可以更新 DNS,这样我的网站就可以重新运行了。
我对 Ubuntu 中的脚本一无所知,但我知道 Java 和 PHP 的基础知识。
计算机:Ubuntu 13.10 服务器,iMac G4 Globe。
小智 6
根据此答案中的代码,我修改并添加了更多调试选项。
我必须设置电子邮件服务器并使用crontab -e它来通过电子邮件发送我当前的 IP 地址。您还需要使脚本文件可执行,并确保您的用户对放置脚本的文件夹具有读写权限。
#!/bin/bash
NOWIPADDR="/home/scripts/nowipaddr"
GETIPADDR="dig +short myip.opendns.com @resolver1.opendns.com"
LOG="/home/scripts/ip.log"
timestamp=$( date +%T )
curDate=$( date +"%m-%d-%y" )
if [ -f $NOWIPADDR ]; then
if [[ `$GETIPADDR` = $(< $NOWIPADDR) ]]; then
echo $curDate $timestamp " IP address check: " $(< $NOWIPADDR) >> $LOG
else
$GETIPADDR > $NOWIPADDR
mail -s "Server IP" email@gmail.com < $NOWIPADDR
fi
else
$GETIPADDR > $NOWIPADDR
mail -s "Server IP" email@gmail.com < $NOWIPADDR
fi
Run Code Online (Sandbox Code Playgroud)
小智 4
您可以编写一个简单的脚本,在每天的特定时间从 cron 运行。
获取文件中的现有 ip,然后运行 if 循环来检查新 ip 与现有 ip,如果两个 ip 保持相同,则可以跳过发送邮件。否则,如果 IP 发生变化,它应该使用新的 IP 发送邮件。
您可以每小时、每天、每周运行该脚本。
NOWIPADDR="nowipaddr"
GETIPADDR="ifconfig.me"
if [ -f $NOWIPADDR ]
then
if [ `cat $NOWIPADDR` = `curl $GETIPADDR` ]
then
echo "no change in IP."
else
curl $GETIPADDR > $NOWIPADDR
mail -s "IP is $GETIPADDR" yourmailadd@gmail.com
fi
else
curl $GETIPADDR >> $NOWIPADDR
fi
Run Code Online (Sandbox Code Playgroud)