# 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

  

版权声明:本文为jbps原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jbps/p/9958855.html