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‘记录值‘,u‘MX优先‘,‘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)

原文地址:https://www.cnblogs.com/cainiaoit/p/8582680.html

时间: 2024-08-03 11:24:22

dnspod 批量添加记录的相关文章

Android批量添加通话记录

在前面有提到批量添加联系人:Android批量添加联系人到通讯录,通话记录和通讯录一样都是直接操作ContentProvider.为了使批量更新.插入.删除数据更加方便,android系统引入了 ContentProviderOperation类,使用ContentProviderOperation的理由 1.所有的操作都在一个事务中执行,这样可以保证数据完整性 2.由于批量操作在一个事务中执行,只需要打开和关闭一个事务,比多次打开关闭多个事务性能要好些 3.使用批量操作和多次单个操作相比,减少

Linux下使用yamdi为flv视频批量添加关键帧

因为公司业务需要,今天早上领导安排将一批flv的视频添加上关键帧.在这里我使用到了yamdi这个工具,结合一个自己编写的小脚本,顺利完成任务.yamdi的安装在这里就不做记录了,直接贴上脚本.水平有限,欢迎指正. #!/bin/sh echo -n "Please enter the path you want to convert the video:" read path if [ "$path" == "" ] then echo &quo

Android批量添加联系人到通讯录

由于工作上的需要,把数据库中备份的联系人添加到通讯录,一般都有几百条记录,插入一条数据系统默认commit一次,这样效率就降低了,如果把所有的数据都添加进去后再commit效率就不一样,这就需要事务 没有添加事务的方法,每次添加一条记录 /** * 单条添加数据 * * @param contacts * @return */ public boolean add(Tb_contacts contacts) { SQLiteDatabase db = helper.getWritableData

SqlServer——批量操作(批量添加,删除)

批量添加数据: 一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , firstName, city ) values(204,'haha' , 'deng' , 'shenzhen'); (如上,仅插入了一条记录) 怎样一次insert插入多条记录呢? 使用示例: insert into persons (id_p, lastname , firstName, city 

.Net中批量添加数据的几种实现方法比较

在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或foreach循环一条一条的添加. for (int i = 0; i < dgv.Rows.Count; i++) { string sql = "insert into ....."; SqlHelper.ExcuteNonQuery(CommandType.Text, sql, nu

zabbix批量添加主机

zabbix通过excel批量添加主机 本次批量添加针对监控**网络设备**,监控介质通过snmp方式. 不需要再一次一次添加每个网络设备. 只需要编写excel表格,即可一键添加监控. 安装excel python模块xlrd yum -y install epel-release yum -y install python-pip pip install --upgrade pip pip install xlrd 准备excel表格 表格列的信息依次为: 主机名,主机显示名,IP,主机所属

微信jssdk批量添加卡券接口

1)首先是官方接口文档: 1.批量添加卡券接口:https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.08619731531288366&token=&lang=zh_CN#wxkq3 : 2.卡券扩展字段cardExt说明:https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.08619731531288366&t

Lync Server 2010批量添加联系人并同步联系人

最近一直帮助朋友整理Lync Server 2010,总是听他抱怨说微软的Lync不能实现组织结构等方面的联系人列表,其实也不完全没办法实现,早在OCS的年代,OCS利用Restkit tool工具进行添加联系人列表,而到了Lync的时代虽然Restkit Tool工具还在,但是已然无法利用之前的方式进行批量添加联系人了,在网上有人表示利用LyncAddContacts.vbs这个工具进行批量添加,但是所有的文章只是把国外这个作者的写的东西照抄过来并且翻译一下就成为原创发布到网络上,本人觉得现在

struts2文件上传(单文件/批量添加)

单文件上传 1.导入上传需要jar包 2.建立UploadAction file是jsp页面的输入项的name相同,后面的两个属性的名称也是有规律的:(inputName+FileName/ContentType) 1 public class UploadAction extends ActionSupport{ 2 3 private static final long serialVersionUID = 1L; 4 private File file;//上传文件的本身 5 privat