# encoding: utf-8
from aliyunsdkcore import client
from aliyunsdkalidns.request.v20150109 import DescribeDomainsRequest,DescribeDomainRecordsRequest,UpdateDomainRecordRequest
import json,urllib,re
#替换以下参数 下面是操作(阿里云域名解析IP的修改)
ID="LTAIk9fUCW407" #这边是key 替换成自己的
Secret="O7z3f1u8YApTLubXKVEMmiu" #替换成自己的
RegionId="cn-hangzhou" #解析记录的ID,此参数在添加解析时会返回,在获取域名解析列表时会返回
DomainName="hack.com" #一级域名 替换成自己的
#想要自动修改的主机名和域名类型
HostNameList = ['python'] #这边可以添加二级域名或者"*"所有的都满足 替换成想设置的二级域名
Types = "A" #解析记录类型
TTL="1" #生存时间,默认为600秒 ,也就是解析时间,我这边是1秒(买了解析的会员服务)
clt = client.AcsClient(ID,Secret,RegionId)
#获取公网ip
def GetLocalIP():
#下面获取公网IP地址,用了2种方式,防止一个失效报错
try:
IPInfo = urllib.urlopen("http://api.ipify.org/?format=json").read()
except IOError:
try:
IPInfo =urllib.urlopen("https://www.taobao.com/help/getip.php").read()
except IOError:
IPInfo = "So sorry!!!"
theIP =re.findall(r"\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}",IPInfo)
nowIP=theIP.pop(0)
print nowIP
return nowIP
#获取域名列表(暂时无用)
def GetDomainList():
DomainList = DescribeDomainsRequest.DescribeDomainsRequest()
DomainList.set_accept_format('json')
DNSListJson = json.loads(clt.do_action_with_exception(DomainList))
print DNSListJson
#更新域名ip
def EditDomainRecord(HostName, RecordId, Types, IP):
UpdateDomainRecord = UpdateDomainRecordRequest.UpdateDomainRecordRequest()
UpdateDomainRecord.set_accept_format('json')
UpdateDomainRecord.set_RecordId(RecordId)
UpdateDomainRecord.set_RR(HostName)
UpdateDomainRecord.set_Type(Types)
UpdateDomainRecord.set_TTL(TTL)
UpdateDomainRecord.set_Value(IP)
UpdateDomainRecordJson = json.loads(clt.do_action_with_exception(UpdateDomainRecord))
print UpdateDomainRecordJson
#获取域名信息
def GetAllDomainRecords(DomainName, Types, IP):
DomainRecords = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
DomainRecords.set_accept_format('json')
DomainRecords.set_DomainName(DomainName)
DomainRecordsJson = json.loads(clt.do_action_with_exception(DomainRecords))
for HostName in HostNameList:
for x in DomainRecordsJson['DomainRecords']['Record']:
RR = x['RR']
Type = x['Type']
if RR == HostName and Type == Types:
RecordId = x['RecordId']
print RecordId
# 这里是 修改域名解析的IP,前提是你得在域名厂商先添加一个域名解析
# 如果当前服务器IP和域名解析中IP中一样会报错,没关系,因为两个IP 一样,不需要修改阿里云域名解析的IP
EditDomainRecord(HostName, RecordId, Types, IP)
IP = GetLocalIP()
GetDomainList() #这个方法是显示看得
GetAllDomainRecords(DomainName, Types, IP)
--------------------------------------------------------------------------------------------------------------------------------------------
# DomainNmeResolutionIP
# 阿里云域名解析(动态)修改IP(远程家里电脑小KS)
1.代码中的ID(Access Key ID)、Secret(Access Key Secret)是您访问阿里云API的密钥,需要自己在阿里云 用户信息管理--->安全信息管理 中创建
2.代码中获取公网ip 用了2中方式,防止有一个失效,大家也可以从网上找其他的api接口获取公网IP
## 教你把家里的电脑弄成服务器
1. 确认你家的宽带用的是公网IP,判断方式看看 路由器中的公网IP 和在百度搜索的IP 地址 是否一样,不一样的话,给客服小姐姐打电话改成公网IP(当然肯定是动态的),一定要是公网IP ,否则一切免谈(GG Over)
2. 买个域名(我是在阿里云买的),域名干啥用??当然是解析你家公网IP啊,上面Python脚本主要是抓取你家电脑当前公网IP
3. 域名有了,公网IP有了,那我们先去阿里云域名管理区解析下,第一次肯定是手动添加一个域名了+解析IP(这个怎么解析,大家应该都会哈。。。)
4. 现在还不能从公司访问你家里的电脑哈,要把家里的路由器(我用的小米路由)端口转发下,比如你要访问家里电脑3389端口,那你得在路由器中转发下,自己设置设定转发接口,有人问了为啥要转发啊,因为电信爷爷不让你用80端口,所以我们都是域名(IP)+端口 的形式访问家里电脑,或者你在IIS上发布的网站
5. 电信爷爷给的公网IP会不定时的变,我们上面的Python脚本现在要发挥作用了,我把这个python脚本部署在家里笔记本电脑虚拟机中的 Centos7),用了cron 定时1秒跑一下这个脚本,秒解析(前提是你的域名买了秒解析的服务,大家都知道默认的域名解析是需要10分钟才生效的),阿里云的域名 有这个服务,大家升级下你的域名解析服务,也就几十块钱,不贵
6.现在的云服务器有点贵啊,如果你是土豪当我没说,我家里现在的宽带是100M,12G的笔记本内存,固态硬盘启动。。。。真TM爽,当然我们的成本就是电费+宽带,你到阿里云或者腾讯云买个服务器 100M的宽带你看看呢,得不少钱啊,2M、4M 1年 最低的也要 好几百吧 ,老子穷,不想花那钱,就想小成本弄个速度快内存快的家用服务器,兄弟们把你家里的电脑用起来吧。。。。。。
7. 如果你有什么问题不会的 欢迎发邮件给我:745914799@qq.com,或者加我QQ。。。。。
## 如果对你又帮助 帮忙点个星啊。。。。。。。。 https://github.com/jibp/DomainNmeResolutionIP