阿里云DDNS python客户端

2016年9月6日 8246点热度 4人点赞 0条评论

最近在家里搞了个存储(就是朋友送了个主板集成,自己搞了个机箱和硬盘,组了组)。将系统装了Centos 6.8,装了apache、samba等等。因为使用的是万网的域名(现阿里云),所以想要实现动态域名解析(缩写ddns,它不同于我们常用的DNS解析,而是专门用于对付那种没有固定公网 IP 的服务器地址解析的。)。而花生壳太不给力,一会一断,还出问题。于是自己在网上搜了搜,已经有人做了客户端这部分的工作(感谢 rfancn ),用 python 2 实现,所以,它是跨平台的。抄录的传送门。

过程如下:

首先从 github 克隆项目到本地:

然后把配置文件拷贝到指定位置并编辑:

这里,我们需要获取阿里云的 API 权限,获取方法则是登录阿里云;

  1. 在后台首页顶栏右边找到“Access Keys”;
  2. 通过短信验证之后点击页面右上边按钮创建一个新的 Access Key;
  3. 页面所显示的Access Key ID和 Access Key Secret 则为所需ID和Key。

获取到 API 权限之后,我们再继续来修改配置:

配置中的 interval 无效不用管, [DomainRecord1] 则是你的域名字段,可以改成对应的名称用来区别不同的子域而已,如果你要做多个子域的动态解析,那就写多个字段即可。

针对这个字段里, domain 为你的域名,主域; sub_domain 为要动态解析的子域,记得提前创建好,解析到任意 IP 即可。

比如说,要动态解析 home.logcg.com,那么就按照上文的例子填写。

type 为解析记录,比如 A 记录(例子中的记录);MX 记录等。

最后 id 和 value 留空,让程序自行完成即可。

编辑完成之后,可以执行 Ubuntu:/opt/aliyun-ddns-client# python ddns.py 来运行,第一次运行会得到错误  [ERROR] You must specify domain record id. 没关系,这是由于我们把 id 字段留空的结果,程序会自行获取完成,再执行一次试试看:

去后台页面刷新看看,解析地址已经更新了。

自动同步

那么,现在我们来利用 crontab来实现域名的动态解析

这句表示每隔一分钟,进入程序目录(我们之前克隆客户端的目录),然后执行程序进行一次对比更新,并且将更新时间进行记录。

至此我们的 blog.wlzs.cn 域名就成了动态解析:v:

 

遇到的问题:

1.ImportError: No module named requests

解决方法:
安装pip,通过pip进行安装缺少的模块。

2.先安装ez_setup.py,然后再安装pip,否则会提示以下问题。

3.Http Status Code:400

解决方法:

此问题好像是因为程序更新的地址与已经解析的地址有冲突,只要阿里云里已经解析的地址和将要更新的地址不相同就可以。

二〇一六年九月六日 22:27:37

龙魂

本站点用于记录工作及学习中遇到的问题, 也希望本站记录对于同样需要的人带来帮助。 如有问题可发邮件:zp@wlzs.cn