dnspod 批量添加记录

Posted IT菜鸟园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dnspod 批量添加记录相关的知识,希望对你有一定的参考价值。

#!/usr/bin/python
#-*- coding: utf-8 -*-
import os,requests,json
import re,xlsxwriter,time
import xlrd
#curl -X POST https://dnsapi.cn/Info.Version -d ‘login_token=LOGIN_TOKEN&format=json‘


#时间
date=time.strftime("%Y-%m-%dT%H-%M-%S", time.localtime())
#文件名 
name=域名筛选-{0}.xlsx.format(date)

url=https://dnsapi.cn/Info.Version
token=
domail_name=daddymami.net

data={login_token:{0}.format(token),format:json}
r = requests.post(url,data=data)
if r.json()[status][code] != 1:
    print(登录失败,检查网站,token,id)
    exit(0)
else:
    print(登录成功,正在执行脚本)


url=https://dnsapi.cn/Domain.List

data={login_token:{0}.format(token),format:json,type:all}
r = requests.post(url,data=data)
json_data=r.json()



#域名名字和id
id_name=dict()
domain_name_all=json_data[domains]
for i in domain_name_all:
    id_name[str(i[name])]=i[id]

print(id_name[daddymami.net])


url=https://dnsapi.cn/Record.Create

ERROR=dict()
#指定文件位置
execl_file=‘‘
#指定页
table_name=‘‘
bk = xlrd.open_workbook(execl_file)
shxrange = range(bk.nsheets)
try:
    table = bk.sheet_by_name(table_name)
except:
    print ("no sheet in %s named %s"%(execl_file,table_name))

nrows = table.nrows
num=1

for row in range(1,nrows):
    
    host_value = table.cell_value(row,1)
    Record_type = table.cell_value(row,2)
    line_value = table.cell_value(row,3)
    Record_value = table.cell_value(row,4)
    MX = table.cell_value(row,5)
    if host_value != ‘‘:
        if MX == -:
            data={login_token:{0}.format(token),format:json,domain_id:id_name[domail_name],sub_domain:host_value,record_line:line_value,record_type:Record_type,value:Record_value}
            r = requests.post(url,data=data)
            output = open(data%s.json%date, w)
            ERROR[row]={"code":int(r.json()[status][code]),"host":str(host_value)}
            output.write(json.dumps(ERROR))
            num +=1
        else:
            data={login_token:{0}.format(token),format:json,domain_id:id_name[domail_name],sub_domain:host_value,record_line:line_value,record_type:Record_type,value:Record_value,mx:MX}
            r = requests.post(url,data=data)
            output = open(data%s.json%date, w)
            ERROR[row]={"code":int(r.json()[status][code]),"host":str(host_value)}
            output.write(json.dumps(ERROR))
            num +=1
        output.close( )

添加完成后,在做对比,看哪些没添加成功

#!/usr/bin/python
#-*- coding: utf-8 -*-
import os,requests,json
import re,xlsxwriter,time
import xlrd
#curl -X POST https://dnsapi.cn/Info.Version -d ‘login_token=LOGIN_TOKEN&format=json‘
#文件名
date=time.strftime("%Y-%m-%dT%H-%M-%S", time.localtime()) 
name={0}.xlsx.format(date)

def start_data():
    
    #登录测试
    url=https://dnsapi.cn/Info.Version
    token=
    domail_name=daddymami.net
    
    data={login_token:{0}.format(token),format:json}
    r = requests.post(url,data=data)
    if r.json()[status][code] != 1:
        print(登录失败,检查网站,token,id)
        exit(0)
    else:
        print(登录成功,正在执行脚本)
    
    #获取域名ID
    
    url=https://dnsapi.cn/Domain.List
    
    data={login_token:{0}.format(token),format:json,type:all}
    r = requests.post(url,data=data)
    json_data=r.json()
    
    
    
    #域名名字和id
    id_name=dict()
    domain_name_all=json_data[domains]
    for i in domain_name_all:
        id_name[str(i[name])]=i[id]
    
    print(id_name[daddymami.net])
    
    
    #获取域名记录
    url=https://dnsapi.cn/Record.List
    
    ERROR=dict()
    
    #对比dnspod与文档的记录是否一致
    
    #指定文件位置
    execl_file=‘‘
    #指定页
    table_name=‘‘
    
    bk = xlrd.open_workbook(execl_file)
    shxrange = range(bk.nsheets)
    try:
        table = bk.sheet_by_name(table_name)
    except:
        print ("no sheet in %s named %s"%(execl_file,table_name))
    
    nrows = table.nrows
    num=1
    domail_data=dict()
    dict_num=0
    for row in range(1,nrows):
        host_value = str(table.cell_value(row,1))
        Record_type = str(table.cell_value(row,2))
        line_value = str(table.cell_value(row,3))
        Record_value = str(table.cell_value(row,4))
        MX = str(table.cell_value(row,5))
        TTL = str(table.cell_value(row,6))
        
        if host_value != ‘‘:
            data={login_token:{0}.format(token),format:json,domain_id:id_name[domail_name],keyword:host_value}
            r = requests.post(url,data=data)
            num +=1
            print(host_value,int(r.json()[status][code]))
            if int(r.json()[status][code]) == 1:
                num=0
                for ii in r.json()[records]:
                    #由于len从1计数所以这里循环开始就加1
                    num+=1
                    if len(ii) > 0:
                        if str(ii[status]) == enabled and str(ii[name]) == host_value and str(ii[value]) == Record_value and str(ii[line]) == line_value and str(ii[type]) == Record_type:
                            break
                        else:
                            #如果循环的次数等于或等于json里的数据数量,那么意味着这条记录在dnspod不存在,加入到domail_data做记录
                            if num >= len(r.json()[records]) :
                                dict_num+=1
                                domail_data[dict_num]={host_value:host_value,Record_type:Record_type,line_value:line_value,Record_value:Record_value,MX:MX,TTL:TTL}
                                num=1
                            
            
            else:
                dict_num+=1
                domail_data[dict_num]={host_value:host_value,Record_type:Record_type,line_value:line_value,Record_value:Record_value,MX:MX,TTL:TTL}
                
            
    output = open(data%s.json%date, w)
    output.write(json.dumps(domail_data))
    output.close( )
    print(xlsx原始数据%sdata%s.json%(os.path.abspath(os.curdir)+"\\",date))
#为了避免xlsxwriter出现故障导致又要重新查询一次dnspod,这里直接写入到json文件做存储,然后在取出,后面出现故障可直接修改open文件名
start_data()
output = open(data%s.json%date)
domail_data = json.load(output)

#设置文件名
workbook=xlsxwriter.Workbook(name)
#设置宽度
worksheet=workbook.add_worksheet()
worksheet.set_column(A:A,20)
worksheet.set_column(B:B,22)
worksheet.set_column(C:C,20)
worksheet.set_column(D:D,15)
worksheet.set_column(E:E,15)
worksheet.set_column(F:F,15)

#生成报表
title = [u主机记录,u记录类型,u线路类型,u记录值,uMX优先,TTL]
worksheet.write_row(A1,title)
num = 2
for i in domail_data.keys():
    tmp=[domail_data[i][host_value],domail_data[i][Record_type],domail_data[i][line_value],domail_data[i][Record_value],domail_data[i][MX],domail_data[i][TTL]]
    worksheet.write_row(A{0}.format(num),tmp)
    num+=1

workbook.close()
#
print(执行完毕,文件路径+os.path.abspath(os.curdir)+"\\"+name)                        
                        
            
            

 

以上是关于dnspod 批量添加记录的主要内容,如果未能解决你的问题,请参考以下文章

使用DNSPod域名解析

批量将DNSPOD域名导入到DNS(厦门帝恩思)

将DNSPOD域名批量导入到DNSLA

dnspod单个修改与批理修改脚本

学会使用DNSPod,仅需三步

获取dnspod指定域名的记录