文档章节

里程碑!家里的开发板能使用Dnspod的动态域名服务,稳定

cubieboard
 cubieboard
发布于 2014/07/31 11:53
字数 752
阅读 53
收藏 0

最近,家里路由器的外网IP不稳定,总是不能访问。铁通的服务很差劲。
因此,http://dev.yangchun.so 暂停访问。

在新浪微博联系我@JAVA搜索
http://weibo.com/richlinux
网站:http://www.yangchun.so


一直想着要把家里的Cubieboard开发板搭一个网站,在外面可以稳定访问。
之前试了花生壳动态域名,非常不稳定。在外面无法访问。

直到昨天看到一篇文章。
linux下的动态域名解析 http://www.leadnt.com/2012/08/domains-dns-localdomains-linux/
如果服务器支持python,终端执行:
cd /home/
wget http://www.leadnt.com/tools/local_domains/local_domains_Python.zip
unzip local_domains_Python.zip
vi local_domains_Python.py

修改如下:
        #Dnspod账户
        _dnspod_user = 'test@example.com'
        #Dnspod密码
        _dnspod_pwd = 'xxx'
        #Dnspod主域名,注意:是你注册的域名
        _domain = 'yangchun.so'
        #子域名,如www,如果要使用根域名,用@
        _sub_domain = 'dev'

然后利用contab加入到计划任务里:
crontab -e
在定时任务里加入:
*  1  *  *  *  python /home/local_domains_Python.py
这个是设置为1小时运行一次。

或者直接运行:

root@localhost :/home# ./local_domains_Python.py
Success.

然后,我的子域名:http://dev.yangchun.so 就可以稳定访问了。
欢迎大家访问,留个言什么滴~

这个东西,跟 Cannikin 写的文章是一样的,他使用了3322.net的动态域名服务。
动态域名下的Cubieboard服务器http://itxp.3322.org/index.php/archives/33/

但实现过程不一样。我这个使用python,是哪位作者自己写的代码,使用DNSPon服务。
Cannikin使用了lynx ,这是个文本浏览器。
lynx -mime_header -auth=申请的用户名:密码 http://members.3322.net/dyndns/update?system=dyndns&hostname=申请的免费动态域名
其实就是一行命令。
建议大家使用DNSpod,毕竟是自己的域名,可以自由使用。

其实我的开发板,今天是用电小二开着,看电小二的5000毫安电量能撑多久。

local_domains_Python.py源代码:
#!/usr/bin/env python
#-*- coding:utf-8 -*-

import urllib2,urllib,json

class Dns:
        #Dnspod账户
        _dnspod_user = 'test@example.com'
        #Dnspod密码
        _dnspod_pwd = 'xxx'
        #Dnspod主域名,注意:是你注册的域名
        _domain = 'yangchun.so'
        #子域名,如www,如果要使用根域名,用@
        _sub_domain = 'app'
        
        def getMyIp(self):
                try:
                        u = urllib2.urlopen('http://www.leadnt.com/tools/ip.php')
                        return u.read()
                except HTTPError as e:
                        print e.read()
                        return None;
        
        
                
        def api_call(self,api,data):
                try:
                        api = 'https://dnsapi.cn/' + api
                        data['login_email'] = self._dnspod_user
                        data['login_password'] = self._dnspod_pwd
                        data['format'] ='json'
                        data['lang'] =  'cn'
                        data['error_on_empty'] = 'no'
                        
                        data = urllib.urlencode(data)
                        req = urllib2.Request(api,data,
                                headers = {
                                        'UserAgent' : 'LocalDomains/1.0.0(roy@leadnt.com)',
                                        'Content-Type':'application/x-www-form-urlencoded;text/html; charset=utf8',
                                        })
                        res = urllib2.urlopen(req)
                        html = res.read()
                        results = json.loads(html)
                        return results
                except Exception as e:
                        print e
                        
        
        def main(self):
                ip = self.getMyIp()
                dinfo = self.api_call('domain.info',{'domain' : self._domain})
                domainId = dinfo['domain']['id']
                rs = self.api_call('record.list',
                        {
                                'domain_id': domainId,
                                'offset' :'0',
                                'length' : '1',
                                'sub_domain' : self._sub_domain
                        })
                        
                if rs['info']['record_total'] == 0:
                        self.api_call('record.create',
                                {
                                        'domain_id' : domainId,
                                        'sub_domain' : self._sub_domain,
                                        'record_type' : 'A',
                                        'record_line' : '默认',
                                        'value' : ip,
                                        'ttl' : '3600'
                                })
                        print 'Success.'
                else:
                        if rs['records'][0]['value'].strip() != ip.strip():
                                self.api_call('record.modify',
                                {
                                        'domain_id' : domainId,
                                        'record_id' : rs['records'][0]['id'],
                                        'sub_domain' : self._sub_domain,
                                        'record_type' : 'A',
                                        'record_line' : '默认',
                                        'value' : ip
                                        })
                        else:
                                print 'Success.'
                
if __name__ == '__main__':
        d = Dns();
        d.main()


截图:
QQ截图20130321103835.jpg


原文作者:play4fun

原文链接:http://forum.cubietech.com/forum.php?mod=viewthread&tid=189


本文转载自:http://forum.cubietech.com/forum.php?mod=viewthread&tid=189

cubieboard
粉丝 11
博文 64
码字总数 2651
作品 1
珠海
私信 提问
域名解析阿里云居行业第一 高出第二名50%

据第三方统计机构DailyChanges公布的最新数据显示,截止至2015年6月8日, 在中国的域名解析市场中,阿里云旗下万网稳居第一,域名解析量达到261万,比第二名DNSPod多出87万个,优势扩大至50%...

阿里云官方博客
2015/06/10
197
0
DNS安全漫谈:谁来拯救脆弱的DNS?

DNS是网络应用的基础设施,它的安全性对于互联网的安全有着举足轻重的影响。对于经常使用电脑或者信息设备的人来说,经常会在网络设置中看到DNS。但是对于普通大众来说,DNS是非常陌生的。而...

DNSPod官方
2014/02/27
128
0
打望两江/pyDNSpod

#pyDNSpod pyDNSpod项目是一个针对DNSpod.cn免费域名解析服务所提供的动态解析更新ip地址的脚本,开发语言为python 2.7(3.3)。 ##软件原理 不停地检验通过路由器拨号获取的动态ip地址,如果与...

打望两江
2015/02/10
0
0
dnspod-sr内网轻量级DNS首选方案

dnspod-sr介绍 dnspod-sr 是一个运行在 Linux 平台上的高性能的递归 DNS 服务器软件,强烈公司内网或者服务器内网使用dnspod-sr,具备高性能、高负载、易扩展的优势,非 BIND、powerdns 等软...

小运
2014/02/10
415
0
动态域名服务软件--PyDDnsPod

PyDDnsPod动态域名服务软件 源码获取:https://github.com/iceleaf916/PyDDnsPod Debian打包下载: http://yeezi.googlecode.com/files/pyddnspod0.6all.deb 源码打包下载:http://yeezi.go......

小叶啦啦
2012/05/30
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB系列-在复制集(replication)以及分片(Shard)中创建索引

关注我,可以获取最新知识、经典面试题以及微服务技术分享   在使用MongoDB时,在创建索引会涉及到在复制集(replication)以及分片(Shard)中创建,为了最大限度地减少构建索引的影响,在副本...

ccww_
6分钟前
2
0
SAP HANA数据库multi container模式JDBC链接connection refused

报错如下信息 com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://xxx.xxx.xxx.xxx:30015 [Cannot connect to host xxx.xxx.xxx.xxx:30015 [C......

flash胜龙
31分钟前
9
0
c++ 虚基类

c++ 虚基类 p556

天王盖地虎626
38分钟前
62
0
k8s删除Terminating状态的命名空间

背景: 我们都知道在k8s中namespace有两种常见的状态,即Active和Terminating状态,其中后者一般会比较少见,只有当对应的命名空间下还存在运行的资源,但是该命名空间被删除时才会出现所谓的...

Andy-xu
49分钟前
52
0
seata源码阅读笔记

seata源码阅读笔记 本文没有seata的使用方法,怎么使用seata可以参考官方示例,详细的很。 本文基于v0.8.0版本,本文没贴代码。 seata中的三个重要部分: TC:事务协调器,维护全局事务和分支...

东都大狼狗
今天
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部