python调用京东云sdk接口


前言

在使用京东云的过程中发现,在云主机导出界面中,导出云主机时并不能一起导出云主机对应的磁盘大小,只能去云磁盘界面去导数据,但是这样有一个问题,当我打开两个execl文件时发现,当一台云主机有多个磁盘时,在进行一一查找云主机的磁盘就比较困难而且麻烦。因此,编写了一个python脚本,通过调用京东云sdk实现导出主机ID、主机IP、主机系统盘、主机磁盘并保存到execl文件中,方便后期维护整理,就不用两个文件再一一对比了。


一、python脚本

	1、下载京东云sdk
		 pip install -U jdcloud_sdk
	2、编写python调用脚本
		from jdcloud_sdk.core.credential import Credential
		from jdcloud_sdk.services.vm.client.VmClient import VmClient
		from jdcloud_sdk.services.vm.apis.DescribeInstancesRequest import DescribeInstancesParameters, DescribeInstancesRequest
		import json
		from openpyxl import Workbook
		
		# 设置Access Key ID和Secret Access Key
		access_key = 'xxx'
		secret_key = 'xxx'
		credential = Credential(access_key, secret_key)
		
		
		# 创建 VmClient 对象
		vm_client = VmClient(credential)
		# 分页参数
		page_size = 50  # 每页返回 50 条记录
		page_number = 1  # 从第 1 页开始查询
		total_count = None  # 记录总数
		instances = []  # 保存所有主机信息的列表
		
		# 创建一个Workbook对象
		wb = Workbook()
		
		# 获取默认的sheet
		sheet = wb.active
		# 设置表头
		sheet['A1'] = 'Instance ID'
		sheet['B1'] = 'Private IP'
		sheet['C1'] = 'System Disk Size (GB)'
		sheet['D1'] = 'Data Disk Size (GB)'
		try:
		    while total_count is None or len(instances) < total_count:
		        # 设置查询参数
		        parameters = DescribeInstancesParameters('cn-north-1')  # 设置地域为华北1
		        parameters.setPageNumber(page_number)
		        parameters.setPageSize(page_size)
		
		        # 创建 DescribeInstancesRequest 对象
		        request = DescribeInstancesRequest(parameters)
		
		        # 发送请求并获取响应
		        response = vm_client.send(request)
		
		        # 处理响应
		        if response.error is not None:
		            print(f'请求失败:{response.error.code} - {response.error.message}')
		            break
		
		        instances.extend(response.result['instances'])
		        total_count = response.result['totalCount']
		
		        print(f'已获取 {len(instances)} / {total_count} 台主机信息')
		        page_number += 1
		
		    print(f'共获取到 {len(instances)} 台主机信息')
		    # 将主机信息写入表格
		    row_num = 2  # 从第二行开始写入数据
		    for instance in instances:
		            instance_id = instance['instanceId']
		            private_ip = instance['privateIpAddress']
		            try:
		                system_disk_size = instance.get('systemDisk', {}).get('cloudDisk',{}).get('diskSizeGB', 0)
		            except KeyError:
		                system_disk_size = -111  # 没有系统盘
		            data_disk_size = 0
		            if 'dataDisks' in instance:
		                for disk in instance['dataDisks']:
		                    try:
		                        data_disk_size += disk.get('cloudDisk',{}).get('diskSizeGB', 0)
		                    except KeyError:
		                        data_disk_size=-222 # 没有数据盘
		
		            sheet[f'A{row_num}'] = instance_id
		            sheet[f'B{row_num}'] = private_ip
		            sheet[f'C{row_num}'] = system_disk_size
		            sheet[f'D{row_num}'] = data_disk_size
		            row_num += 1
		            # 保存Excel文件
		    wb.save('host_info.xlsx')
		except Exception as e:
		    print('获取云主机信息时出现错误:{}'.format(str(e)))

二、结果展示

在这里插入图片描述
在这里插入图片描述


总结

通过编写python调用京东云sdk脚本,极大的提高了环境运维整理效率。而且能一目了然的看到每个实例对应的磁盘信息,减少了手动整理对比时间。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值