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'] != '':
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'] != '':
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)
dnspod 批量添加记录的更多相关文章
- SqlServer 批量添加记录
declare @i int ) begin INSERT INTO [dbo].[Settlements] ([ID] ,[Count] ,[SettlementDate]) VALUES ( ne ...
- 分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口
一.Zabbix-3.0.3批量添加主机的配置如下: 0)被监控机上要安装zabbix_agent,并配置好zabbix_agentd.conf (如下172.29.8.50是zabbix_serve ...
- 批量添加删除Windows server DNS服务 恶意域名 * A记录 指向 127.0.0.1(2019年6月5日更新)
下载链接:https://pan.baidu.com/s/1OUHyvnIfXYF0PdiT-VRyHw 密码:7gjj 注意!本解决方案在本地的Windows server服务器上把恶意域名指向1 ...
- SqlServer——批量操作(批量添加,删除)
批量添加数据: 一条insert语句批量插入多条记录 常见的insert语句,向数据库中,一条语句只能插入一条数据: insert into persons (id_p, lastname , fir ...
- SQL批量添加主键脚本
--SQL批量添加主键脚本 --操作提示:运行此脚本前请记得备份您要操作的数据库 --实现功能:执行脚本后数据库中的所有数据表都会有一个主键 --添加规则1:主键名称为ID(可自己修改),数据类型为整 ...
- .Net中批量添加数据的几种实现方法比较
在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...
- ArcGis Python脚本——批量添加字段
先看如何增加一个字段 函数:arcpy.AddField_management 语法:AddFields_management (in_table, field_description) 参数 说明 ...
- 09 ORM 多表操作,创建表,添加记录
1.数据库表关系 1.一对多 为什么需要,重复字段太多 一对多关系表 Book id title price publish_id 1 python 100 1 2 php 200 2 3 go 10 ...
- ADO.NET- 中批量添加数据的几种实现方法比较
在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...
随机推荐
- easyui 获取树的平级根节点的父节点&选择性展示树的一个根节点
1.easyui的树的根节点一般是几个平级的,怎样获取这些父节点的id? 可以将获取到的平级根节点放在一个数组中 var roots=[]; roots=$("#tree1").t ...
- 缓存(CDN缓存,浏览器(客户端)缓存)
1.什么是缓存? 缓存是一种数据结构,用于快速查找以及执行的操作结果.因此,如果一个操作执行起来很慢,对于常用的输入数据就可以将操作的结果缓存,并在下次调用该操作时使用缓存的数据. 缓存是一个到处都存 ...
- HTTP的缓存控制
1.缓存的分类: (1)缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧(client side,比如 web browser). (2)服务端缓存又分为 代理服务 ...
- 论如何入门地使用vscode
微软大法好啊 这货更像是个gedit 以下内容只适合Oiers使用 本文档只适合新手引导的阶段使用 下载 这个是链接 可见这东西是和Emacs一样跨系统的 不知道为什么下载速度贼快 配置 还记得我们用 ...
- Linux(CentOS)下SVN命令使用实例[转]
原文出处: http://blog.csdn.net/limingzhong198/article/details/22394809 前言:关于Linux(Unix)系统下的SVN命令使用的文章,在网 ...
- Python基础简介与简单使用
Python介绍 Python发展史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flyi ...
- day06_08 字符串
1.0 双引号和单引号的区别 a = "Let's go" print(a) #>>>Let's go 2.0 重复输出字符串* print('hello'*2) ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- 孤荷凌寒自学python第七天 列表的复制与序列的基本运算
孤荷凌寒自学python第七天 列表的复制与序列的基本运算 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) (同步语音:https://www.ximalaya.com/keji/191030 ...
- (原)Unreal 渲染模块 渲染流程
@author:白袍小道 浏览分享随缘,评论不喷亦可. 扯淡部分: 在temp中,乱七八糟的说了下大致的UE过程.下面我们还是稍微别那么任性,一步步来吧. UE渲染模块牵扯到场景遍历. ...