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