做了个简单的python3脚本(以gmail为例):
import urllib.request
import smtplib
import logging
import os
"""
用法:
1,先在本脚本同目录下,建个空的“oldIP.txt“的文本文件
2,在sendMail函数里修改自己的邮箱名和密码等
"""
try:
newIP = urllib.request.urlopen("https://api.ipify.org").read().decode()
except:
newIP = urllib.request.urlopen("http://ip.6655.com/ip.aspx").read().decode()
pyScriptFolder = os.path.dirname(os.path.abspath(__file__)) + "/"
with open(pyScriptFolder + "oldIP.txt", "r") as f:
oldIP = f.read()
def sendMail(contents):
FROM = "*******" # 发件人信息
TO = "*******" # 收件人信息,最好设置为免翻墙就可接受邮件的邮箱
SUBJECT = "Subject: {}".format(contents) # set subject
username = "*******" # 邮箱用户名
pw = "*******" # 邮箱密码
gs = smtplib.SMTP("smtp.gmail.com:587") # gmail server
gs.ehlo()
gs.starttls()
gs.login(username, pw)
gs.sendmail(FROM, TO, SUBJECT)
gs.quit()
if newIP == oldIP:
pass
else:
sendMail(newIP)
with open(pyScriptFolder + "oldIP.txt", "w") as f:
f.write(newIP)
# 记录简单的日志
logging.basicConfig(
level=logging.DEBUG,
filename=pyScriptFolder + "logger.log",
format="%(asctime)s %(message)s")
logging.info(newIP)
最后,可以把脚本加入到cron中,设定自动运行的时间和频率等。当然,如果平时电脑不怎么开机使用的话,没有多大意义。
但是如果家里有24小时开机的NAS的话,就方便了。 首先NAS的DDNS可以随时自动连接变化后的IP地址,但是有个风险是,如果NAS提供的DDNS域名被墙了,就悲剧了。反过来看,动不动就变化的外网IP一定程度上可以灵巧地乖避GFW的封锁。
当然,我是把这个脚本挂在NAS上,每隔1小时自动运行1次。