cubieboard相关配置备忘-包括用DNSPOD的服务创建智能动态域名
cubieboard用字符版的cubian,做了些配置,备注以免遗忘:
1.安装读exfat的package: apt-get install exfat-fuse
2.安装pycurl: apt-get install python-pycurl
3.安装pip: wget
https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
4.使用dnspod.cn的智能DNS,确保域名可用:,下面的YOUR
DOMAIN,USERNAME,PASSWORD需要根据自己的情况修改。还有就是crontab:
cron
*/30 * * * *
~/bin/autoUpdateDomainIP.py
每30分钟更新一次,对于目前的电信的ADSL是够了;
还有就是电信把80端口给封了,
自己要做个路由器的适配,变成http://your.domain:xxxx/才能访问。
1 #!/usr/bin/env python
2 #-*-coding:utf-8-*-
3
4 import pycurl,urllib,json,urllib2
5 from StringIO import StringIO
6
7 #------------基本信息-------------
8 #API URL
9 url = "https://dnsapi.cn"
10
11 #获取当前服务器外网地址的公用服务器
12 urlForCurrentIP =
"http://bot.whatismyipaddress.com"
13
14 #需要用来判断的域名列表
15 domainNeedUpdate = ("YOUR DOMAIN")
16
17 #用户名
18 username = "USERNAME"
19
20 #密码
21 password = "PASSWORD"
22
23 #返回语言
24 language = "cn"
25
26 #返回格式
27 format = "json"
28
29 #返回错误处理
30 error_on_empty = "no"
31
32 #公共参数
33 post_data={"login_email":username,
34
"login_password":password,
35
"format":format,
36
"lang":language,
37
"error_on_empty":error_on_empty}
38
39 #根据不同的参数获取需要的信息
40 def request(action, post_data):
41
buffer = StringIO()
42
curl = pycurl.Curl()
43
curl.setopt(curl.URL, url + "/" + action)
44
curl.setopt(curl.POSTFIELDS,urllib.urlencode(post_data) )
45
#curl.setopt(curl.WRITEDATA, buffer)
46
curl.setopt(curl.WRITEFUNCTION, buffer.write)
47
curl.perform()
48
curl.close()
49
return
buffer.getvalue().decode("unicode_escape").encode("utf-8")
50
51 #获取当前用户下所有的域名名字及对应的id
52 def getDomainInfo():
53
data = request("Domain.List", post_data)
54
#print(data)
55
jsonData = json.loads(data)
56
domainList = jsonData.get("domains")
57
#print(domainList)
58
domainInfo = {}
59 for
d in domainList:
60
domainInfo[d.get("name")] =
d.get("id")
61
return domainInfo
62
63 #获取当前域名ID下面的所有"A"记录清单
64 def getRecordInfo(domainId):
65
post_data["domain_id"] = domainId
66
data = request("Record.List", post_data)
67
jsonData = json.loads(data)
68 if
jsonData.get("code") == "10":
69
return None
70
recordsList = jsonData.get("records")
71
recordsInfo = {}
72 for
r in recordsList:
73
if (r.get("type") == "A") and
((r.get("name") == "@" ) or (r.get("name") == "www")):
74
recordsInfo[r.get(′name′)] =
{′recordId′:r.get("id"), "recordValue":r.get(′value′)}
75
#print recordsInfo
76
return recordsInfo
77
78 #获取当前服务器IP
79 def getIP():
80
return urllib2.urlopen(urlForCurrentIP).read()
81
82 def updateIP(domainId, recordId,
recordType, recordName, newIP):
83
post_data["domain_id"] = domainId
84
post_data["record_id"] = recordId
85
post_data["record_type"] = "A"
86
post_data["sub_domain"] = recordName
87
post_data["record_line"] = "默认"
88
post_data["ttl"] = 600
89
post_data["value"] = newIP
90
return request("Record.Modify", post_data)
91
92 if __name__ == ′__main__′:
93
myDomainList = getDomainInfo()
94
#print myDomainList
95 for
(mdName, mdValue) in myDomainList.items():
96
if mdName ==
domainNeedUpdate:
97
myRecordsInfo = getRecordInfo(mdValue)
98
currentIP = getIP()
99
for (mrName, mrValue) in
myRecordsInfo.items():
100
if currentIP !=
mrValue.get("recordValue"):
101
#print mdName, mdValue,
mrValue, mrName, currentIP,
mrValue.get("recordValue")
102
updateIP(mdValue, mrValue.get("recordId"), "A",
mrName, currentIP)
5. 修改为本地时间:sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai
/etc/localtime
6. 关掉主板的绿灯:
su
echo 1 >
/sys/class/gpio 然后出来一个新目录:gpio_pg3
cd gpio_pg3
echo out >
direction
echo 0 > value