欢迎查看我的摸爬滚打DDNS之一
摸爬滚打DDNS之一
摸爬滚打DDNS之二
摸爬滚打DDNS之三(完整版)
问题由来
运营商的公网IP是动态的,因此造成一段时间后无法访问公司资源。我们可以通过脚本实时监测公网IP,有变动时给邮箱发邮件。
配置环境
本机环境
Ubuntu 20.04
配置源 -本段为CSDN博主「Tinghua_M」创作
Ubuntu 20.04上无法直接安装heirloom-mailx,需要添加软件源
sudo vi /etc/apt/sources.list
写入
deb http://cz.archive.ubuntu.com/ubuntu xenial main universe
安装heirloom-mailx
sudo apt-get update
sudo apt install heirloom-mailx
配置外部SMTP
Ubuntu18.04的配置文件为/etc/s-nail.rc,把下面几行放置在最后
set from="123456789@qq.com"
set smtp="smtps://smtp.qq.com:465"
set smtp-auth-user="123456789@qq.com"
set smtp-auth-password="ahkphxxabcbshabbga"
set smtp-auth=login
注意:第四行password是指的QQ邮箱授权码,不是密码
授权码不知道怎么回事的去百度一下!
测试
echo "邮件内容" | s-nail -s "邮件主题" xxx456@126.com
或者
s-nail -s "邮件主题" 123xxx@126.com < result.txt
编写sh文件-本段参考博主「手动销户了」
使用刚刚配置的邮箱服务,如果监测到IP更换就发送一份邮件。
脚本下载 获取公网ip并发送邮件.zip
需要curl
报错的可以直接复制以下命令下载
apt install curl
修改后的核心代码
#!/bin/bash
# MAYBE CHANGE THESE
ip=$(curl http://pv.sohu.com/cityjson 2>> /dev/null | awk -F '"' '{print $4}')
ip_file="/usr/local/bin/check_ip.txt"
log_file="/usr/local/bin/check_log.txt"
if [ -f $ip_file ]; then
old_ip=$(cat $ip_file)
echo $old_ip
if [ $ip != $old_ip ]
then
echo "IP has not changed."
echo "--------yes--------"
echo "$ip" | s-nail -s "ip" *****@qq.com
echo -e "[$(date)] - $ip" >> $log_file
echo "$ip" > $ip_file
else
echo "exlt"
exit 0
fi
fi
本代码会产生两个文件
1.check_ip.txt用来存放IP地址。
2.check_log.txt用来存放日志
建议自己用 vim在/usr/local/bin目录下 创建一下。
下载后的操作步骤:
1、下载/添加文件到/usr/local/bin的目录下
mv checkIP.sh /usr/local/bin
2、执行权限
chmod +x *.sh
3、添加到定时任务
crontab -e
*/2 * * * * /usr/local/bin/checkIP.sh >/dev/null 2>&1
这里每两分钟检测一次!!
至此,就完成了