做了个简单的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次。