使用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')
仅作记录
相关文章推荐
- 使用API实现的一个增加系统桌面,并且可以任意切换的小程序.
- VB使用API实现串口通讯的异常问题
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- 在J2ME中使用Nokia UI API实现图片的旋转
- 使用System.Text.RegularExpression中的API实现网页数据的抓取
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- JDK核心API:使用动态代理实现AOP功能
- jsp里使用java excel api实现文件下载
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- 声卡虚拟示波器简单功能-使用matlab DAQ工具箱中API实现
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- VB6使用API实现串口通信
- C#中使用API来实现BEEP
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框
- vba使用win32 API(GetOpenFileName )实现打开文件对话框