使用Python获取ECS相关信息2

简介: 上一次我们已经知道如何用python获取ECS信息了,不知道的可以点这里 1.返回数据格式 通过上回的代码,我们将会获得如下的数据(json格式) {"PageNumber":1,"TotalCount":1,"PageSize":10,"RequestId":"CF15510B-9510-.

上一次我们已经知道如何用python获取ECS信息了,不知道的可以点这里


1.返回数据格式


通过上回的代码,我们将会获得如下的数据(json格式)


{"PageNumber":1,"TotalCount":1,"PageSize":10,"RequestId":"CF15510B-9510-4E04-939B-F48C453D0E62","Instances":{"Instance":[{"ImageId":"centos_7_04_64_20G_alibase_201701015.vhd","VlanId":"","EipAddress":{"IpAddress":"","AllocationId":"","InternetChargeType":""},"ZoneId":"cn-shanghai-b","IoOptimized":true,"SerialNumber":"41b2b827-014b-4723-bcdf-a5764c9d1c2e","Cpu":1,"Memory":2048,"DeviceAvailable":true,"SecurityGroupIds":{"SecurityGroupId":["sg-uf6fq26zc62t0u0t8ftr"]},"SaleCycle":"","AutoReleaseTime":"","OSType":"linux","ResourceGroupId":"","OSName":"CentOS  7.4 64位","InstanceNetworkType":"vpc","HostName":"aliyun-sh","CreationTime":"2018-12-05T06:51Z","RegionId":"cn-shanghai","DeletionProtection":false,"OperationLocks":{"LockReason":[]},"ExpiredTime":"2019-06-05T16:00Z","InnerIpAddress":{"IpAddress":[]},"InstanceTypeFamily":"ecs.n4","InstanceId":"i-uf6gchn2j65r5scbn6rz","NetworkInterfaces":{"NetworkInterface":[{"MacAddress":"00:16:3e:02:0e:a2","PrimaryIpAddress":"172.19.214.188","NetworkInterfaceId":"eni-uf68mu7aigxbcs3huv90"}]},"InternetMaxBandwidthIn":500,"CreditSpecification":"","InternetChargeType":"PayByBandwidth","SpotStrategy":"NoSpot","StoppedMode":"Not-applicable","InternetMaxBandwidthOut":1,"VpcAttributes":{"NatIpAddress":"","PrivateIpAddress":{"IpAddress":["172.19.214.188"]},"VSwitchId":"vsw-uf6a4tfeug6t05akf9w92","VpcId":"vpc-uf6eyafn4cmj5nol253d4"},"SpotPriceLimit":0.0,"StartTime":"2018-12-14T02:33Z","KeyPairName":"哇咔咔的sh密钥","InstanceName":"哇咔咔的上海ECS","Description":"","PublicIpAddress":{"IpAddress":["47.100.239.99"]},"InstanceType":"ecs.n4.small","Status":"Running","Recyclable":false,"ClusterId":"","GPUSpec":"","GPUAmount":0,"InstanceChargeType":"PrePaid","DedicatedHostAttribute":{"DedicatedHostId":"","DedicatedHostName":""},"DeploymentSetId":""}]}}

稍微排版一下是这样的


{
"PageNumber":1,
"TotalCount":1,
"PageSize":10,
"RequestId":"04F89A1C-EC73-4F6C-84EE-F2703732DE09",

"Instances":
{
	"Instance":
	[
		{
			"ImageId":"centos_7_03_64_20G_alibase_20170818.vhd",
			"VlanId":"",
			"EipAddress":
			{
				"IpAddress":"",
				"AllocationId":"",
				"InternetChargeType":""
			},
			"ZoneId":"cn-shanghai-b",
			"IoOptimized":true,
			"SerialNumber":"41b2b827-014b-4723-bcdf-a5764c9d1c2e",
			"Cpu":1,
			"Memory":2048,
			"DeviceAvailable":true,
			"SecurityGroupIds":
			{
				"SecurityGroupId":["sg-uf6fq26zc62t0u0t8ftr"]
			},
			"SaleCycle":"",
			"AutoReleaseTime":"",
			"OSType":"linux",
			"ResourceGroupId":"",
			"OSName":"CentOS  7.3 64位",
			"InstanceNetworkType":"vpc",
			"HostName":"aliyun",
			"CreationTime":"2018-12-05T06:51Z",
			"RegionId":"cn-shanghai",
			"DeletionProtection":false,
			"OperationLocks":{"LockReason":[]},
			"ExpiredTime":"2019-06-05T16:00Z",
			"InnerIpAddress":{"IpAddress":[]},
			"InstanceTypeFamily":"ecs.n4",
			"InstanceId":"i-uf6gchn2j65r5scbn6rz",
			"NetworkInterfaces":
			{
				NetworkInterface":
				[
					{
						"MacAddress":"00:16:3e:02:0e:a2",
						"PrimaryIpAddress":"172.19.214.188",
						"NetworkInterfaceId":"eni-uf68mu7aigxbcs3huv90"
					}
				]
			},
			"InternetMaxBandwidthIn":500,
			"CreditSpecification":"",
			"InternetChargeType":"PayByBandwidth",
			"SpotStrategy":"NoSpot",
			"StoppedMode":"Not-applicable",
			"InternetMaxBandwidthOut":1,
			"VpcAttributes":
			{
				"NatIpAddress":"",
				"PrivateIpAddress":
				{
					"IpAddress":["172.19.214.188"]
				},
				"VSwitchId":"vsw-uf6a4tfeug6t05akf9w92",
				"VpcId":"vpc-uf6eyafn4cmj5nol253d4"
			},
			"SpotPriceLimit":0.0,
			"StartTime":"2018-12-05T06:55Z",
			"KeyPairName":"哇咔咔的密钥",
			"InstanceName":"哇咔咔",
			"Description":"",
			"PublicIpAddress":
			{
				"IpAddress"["47.100.239.99"]
			},
			"InstanceType":"ecs.n4.small",
			"Status":"Running",
			"Recyclable":false,
			"ClusterId":"",
			"GPUSpec":"",
			"GPUAmount":0,
			"InstanceChargeType":"PrePaid",
			"DedicatedHostAttribute":
			{
				"DedicatedHostId":"",
				"DedicatedHostName":""
			},
			"DeploymentSetId":""
		}
	]
}
}


2.数据处理


接下来我们就要用python对这些数据进行处理,恕本人才疏学浅,用了最蠢的方法来处理,直接上代码:



首先用python中的json.loads方法将获取到的json数据转化为字典


dictA=json.loads(response)

之后用for循环将一层一层的字典,列表的嵌套提取出来,并且存储到一个新的字典里面去:


dictEnd={}
dictB=dictA['Instances']
listA=dictB['Instance']
dictC=listA[0]
for i in dictC:
	if(type(dictC[i])==dict):
		dictD=dictC[i]
		if(type(dictD)==dict):
			for d in dictD:
				dictE=dictD[d]
				if(type(dictE)==list):
					listB=dictE
					if listB:
						if(type(listB[0])==dict):
							dictF=listB[0]
							for f in dictF:
								dictEnd[f]=dictF[f]
					else:
						dictEnd[d] = dictD[d]
				elif(type(dictE)==dict):
					dictG=dictE
				else:
					dictEnd[d]=dictD[d]
	else:
		dictEnd[i]=dictC[i]


这样的话,我们就已经将这个ECS的信息存储到diceEnd这个字典里面了,由于本人决定只把数据的值的部分输出到表格中,所以使用以下代码把刚刚生成的dict转换为一个list


listC=list(dictEnd.values())

3.输出到表格


这里使用openpyxl这个模块将内容输出到表格


wb = Workbook()
ws=wb.active
ws.append(listC)
wb.save('txt.xlsx')

4.完整代码


from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526 import DescribeInstancesRequest
from openpyxl import Workbook
import json

#创建AcsClient实例
client = AcsClient(
	"你的AccessKey",
	"你的AccessKey secret",
	"地域"
);

# 创建request,并设置参数
request = DescribeInstancesRequest.DescribeInstancesRequest()
request.set_PageSize(10)

# 发起API请求并显示返回值
response = client.do_action_with_exception(request)

dictA=json.loads(response)

dictEnd={}
dictB=dictA['Instances']
listA=dictB['Instance']
dictC=listA[0]
for i in dictC:
	if(type(dictC[i])==dict):
		dictD=dictC[i]
		if(type(dictD)==dict):
			for d in dictD:
				dictE=dictD[d]
				if(type(dictE)==list):
					listB=dictE
					if listB:
						if(type(listB[0])==dict):
							dictF=listB[0]
							for f in dictF:
								dictEnd[f]=dictF[f]
					else:
						dictEnd[d] = dictD[d]

				elif(type(dictE)==dict):
					dictG=dictE
				else:
					dictEnd[d]=dictD[d]
	else:
		dictEnd[i]=dictC[i]


#转化为list
listC=list(dictEnd.values())
for i in range(len(listC)):
	if (type(listC[i])==list):
		listC[i]=""
for i in listC:
	print(i)

#excel
wb = Workbook()
ws=wb.active
ws.append(listC)
wb.save('txt.xlsx')

以上纯属本人理解,有什么错误的地方还望各位大神指正

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
1551 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
5月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1113 1
|
8月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
588 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
6月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
1428 0
|
7月前
|
API Python
VIN码查询API的实战指南:获取二手车信息以Python为例
随着机动车保有量上升,中国二手车市场迎来发展机遇。本文介绍如何通过VIN码查询API获取车辆详细信息,提升交易透明度与安全性。
257 1
|
6月前
|
前端开发 数据安全/隐私保护 Python
虚拟物流单号生成器, 虚拟快递单号假物流信息, 虚拟快递单号在线生成【python框架】
这个虚拟物流单号生成系统包含以下功能:支持多种主流快递公司的单号生成
|
6月前
|
数据安全/隐私保护 数据格式 Python
快递单号模拟生成器, 虚拟物流信息在线生成,虚假快递单号生成器【python】
支持多种主流快递公司生成符合各快递公司规则的快递单号自动生成收发件人信息
|
6月前
|
JSON 前端开发 API
快递单号生成器在线, 快递单号模拟生成器, 虚拟物流信息在线生成【python】
项目包含三个主要模块:快递单号生成器核心逻辑、Flask Web应用程序和前端HTML页面
|
6月前
|
JSON API 数据安全/隐私保护
车辆五项信息查询 API 的实践指南:通过Python调用赋能车辆信息标准化
本API通过车牌号快速获取车辆五项核心信息,包括品牌、登记日期、车架号等,助力二手车评估、维修、保险等场景实现数字化转型。数据源自权威公安交管库,日更同步,毫秒级响应,满足高并发需求,符合隐私保护规范,是推动汽车后市场智能化的重要工具。
413 0

推荐镜像

更多