灌溉梦想,记录脚步
« »
2014年10月22日技术合集

使用Python控制DDNS解析

需求:

光纤入户,一台服务器(windows server 2008 r2),连接内部网络。
同时通过pppoe连接到公网,获取一公网IP,公网IP需要域名映射。

尝试:

1、通过Oray客户端,正确情况可解析,当pppoe断开再连接后,Oray客户端不会去主动解析到新获取的地址,需要重启。

2、使用DNSPOD客户端,状况与Oray客户端一致。

解决:

通过观察发现,当pppoe拨号成功后,windows产生20267事件,那么思路来了,可通过计划任务监视事件,发生后启动解析。

比较发现Oray方式较为简单,很容易通过Python(v3)实现:

from urllib.request import urlopen
import re
import pycurl
 
html = urlopen('http://ddns.oray.com/checkip').read()
html = html.decode('GBK')
reip = re.compile(r'(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d])')
ip=reip.findall(html)[0]
print(ip)
url = 'http://username:password@ddns.oray.com/ph/update?myip=' + ip
c = pycurl.Curl()
c.setopt(c.URL, url)
c.perform()

上述代码通过http://ddns.oray.com/checkip获取公网IP,传递给url并解析

将脚本保存,并通过计划任务实现。

下图:监视事件

下图:执行脚本

日志信息 »

该日志于2014-10-22 22:47由 kevin 发表在技术合集分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

发表回复