您的位置:首页 > 其它

使用dnspodapi 实现ddns,适用于树莓派

2014-06-20 10:46 288 查看
python版本(适用于树莓派)

#!/usr/bin/env python
#-*-coding:utf-8-*-
import httplib,urllib
import json
import re,urllib2
import time

class Getmyip:
def getip(self):
try:
myip = self.visit("http://www.whereismyip.com/")
#           return myip
except:
try:
myip = self.visit("http://www.bliao.com/ip.phtml")
#               return myip
except:
try:
myip = self.visit("http://www.whereismyip.com/")
#                   return myip
except:
myip = "So sorry!!!"
return myip

def visit(self,url):
opener = urllib2.urlopen(url)
if url == opener.geturl():
str = opener.read()
asd=re.search('\d+\.\d+\.\d+\.\d+',str).group(0)
return asd

def setdnspod(newip):
params = 'login_email=xxxxx&login_password=xxxxx&format=json&domain_id=16415545&record_id=67237927&record_line=默认&sub_domain=www&value='+ newip +'&record_type=A'
header = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
conn = httplib.HTTPSConnection("dnsapi.cn")
#获取api版本信息
#conn.request("POST","/Info.Version",params,header)
#获取domains列表
#已知"id": xxxx,"name": "xxxx"
#conn.request("POST","/Domain.List",params,header)
#设置ddns
conn.request("POST","/Record.Modify",params,header)
#获取记录列表
#已知 "id": "xxxx", "name": "blog",      "id": "xxxx","name": "www",
#conn.request("POST","/Record.List",params,header)
response = conn.getresponse()
#print response.status, response.reason
data = response.read()
#print(data)
conn.close()
s = json.loads(data)
return s["status"]["code"],data

if __name__ == '__main__':
getmyip = Getmyip()
localip=0
while(1):
time.sleep(1)
tm_str_start = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
print(tm_str_start+'\n')
localtmp = getmyip.getip()
if (localtmp == None):
print('GET LOCAL IP ERROR!\n')
else:
if (localip != localtmp):
localip = localtmp
code,data = setdnspod(localip)
if (code == '1'):
print('set new ip success:' + localip +'\n')
else:
print('set new ip failed:' + code + ':' + data + '\n')
else:
print('new ip == old ip'+':'+localip+':'+localtmp+'\n')


仅作记录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: