前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转Lighthouse】利用Python调用云Api实现多地域快速导出轻量应用服务器详细信息

【玩转Lighthouse】利用Python调用云Api实现多地域快速导出轻量应用服务器详细信息

原创
作者头像
小宇-xiaoyu
发布2022-04-18 11:42:55
1.3K2
发布2022-04-18 11:42:55
举报
文章被收录于专栏:玩转Lighthouse.

0.准备工作

使用本代码请先进行子用户创建并授权云API与轻量应用服务器全部权限

请注意 为了保障您的账户以及云上资产的安全 请谨慎保管SecretId 与 SecretKey 并定期更新 删除无用权限

前往创建子用户:https://console.cloud.tencent.com/cam

1.SDK下载

请确保Python版本为3.6+

查看Python版本

代码语言:javascript
复制
python3 -V

安装腾讯云Python SDK

代码语言:javascript
复制
pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python

安装pandas

代码语言:javascript
复制
pip install -i https://mirrors.tencent.com/pypi/simple/ pandas

2.代码部分

代码语言:javascript
复制
import json
import pandas as pd
from time import time, strftime, localtime
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.lighthouse.v20200324 import lighthouse_client, models

start = time()
aria = ['ap-beijing', 'ap-chengdu', 'ap-guangzhou', 'ap-hongkong', 'ap-shanghai', 'ap-singapore',
        'na-siliconvalley','eu-moscow', 'ap-tokyo', 'ap-nanjing', 'ap-mumbai', 'eu-frankfurt']
aria_zh = ['北京', '成都', '广州', '中国香港', '上海', '新加坡', '硅谷', '莫斯科', '东京', '南京', '孟买', '法兰克福']

# 此处添加SecretId 与 SecretKey
cred = credential.Credential("SecretId", "SecretKey")

httpProfile = HttpProfile()
httpProfile.endpoint = "lighthouse.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile

lh_id = []
lh_name = []
lh_state = []
lh_aria = []
lh_zone = []
lh_cpu = []
lh_memory = []
lh_os = []
lh_bandwidth = []
lh_public_ip = []
lh_private_ip = []
lh_disk_size = []
lh_created_time = []
lh_expired_time = []
lh_tft = []
lh_tfu = []
lh_tfr = []

print('代码运行中 预计30s导出完毕')

for i in range(12):
    client = lighthouse_client.LighthouseClient(cred, aria[i], clientProfile)
    # 获取实例信息
    try:
        # 查看所有实例
        req = models.DescribeInstancesRequest()
        params = {}
        req.from_json_string(json.dumps(params))
        resp = client.DescribeInstances(req)
        response = json.loads(resp.to_json_string())
        # print(response)
        # 实例详细信息

        # 判断地域是否含有实例
        if response['TotalCount'] > 0:
            # print(aria_zh[i] + '实例数为' + str(response['TotalCount']))
            # 提取返回的json信息
            for ii in range(response['TotalCount']):
                lh_id.append(response['InstanceSet'][ii]['InstanceId'])
                lh_name.append(response['InstanceSet'][ii]['InstanceName'])
                lh_state.append(response['InstanceSet'][ii]['InstanceState'])
                lh_aria.append(aria_zh[i])
                zone = response['InstanceSet'][ii]['Zone']
                zone_rep = zone.replace('{0}-'.format(aria[i]), '')
                lh_zone.append(zone_rep)
                lh_cpu.append(response['InstanceSet'][ii]['CPU'])
                lh_memory.append(response['InstanceSet'][ii]['Memory'])
                lh_os.append(response['InstanceSet'][ii]['OsName'])
                lh_bandwidth.append(response['InstanceSet'][ii]['InternetAccessible']['InternetMaxBandwidthOut'])
                lh_public_ip.append(response['InstanceSet'][ii]['PublicAddresses'][0])
                lh_private_ip.append(response['InstanceSet'][ii]['PrivateAddresses'][0])
                lh_disk_size.append(response['InstanceSet'][ii]['SystemDisk']['DiskSize'])
                lh_created_time.append(response['InstanceSet'][ii]['CreatedTime'])
                lh_expired_time.append(response['InstanceSet'][ii]['ExpiredTime'])
                # 查看流量包
                try:
                    req1 = models.DescribeInstancesTrafficPackagesRequest()

                    params1 = {"InstanceIds": [response['InstanceSet'][ii]['InstanceId']]}

                    req1.from_json_string(json.dumps(params1))

                    resp1 = client.DescribeInstancesTrafficPackages(req1)

                    response1 = json.loads(resp1.to_json_string())
                    tf = response1['InstanceTrafficPackageSet'][0]['TrafficPackageSet'][0]
                    # 总流量
                    tft = str(round(tf['TrafficPackageTotal'] / 1073741824, 2))
                    lh_tft.append(tft)
                    # 已用流量
                    tfu = str(round(tf['TrafficUsed'] / 1073741824, 2))
                    lh_tfu.append(tfu)
                    # 剩余流量
                    tfr = str(round(tf['TrafficPackageRemaining'] / 1073741824, 2))
                    lh_tfr.append(tfr)

                except TencentCloudSDKException as err:
                    print(err)

    except TencentCloudSDKException as err:
        print(err)

dataframe = pd.DataFrame({'ID': lh_id, '实例名': lh_name, '状态':lh_state, '地域': lh_aria, '可用区': lh_zone,
                          'CPU(核数)': lh_cpu, '内存(GB)': lh_memory, '操作系统': lh_os, '带宽(Mbps)': lh_bandwidth,
                          'IPv4公网IP': lh_public_ip, 'IPv4内网IP': lh_private_ip, '系统盘大小(GB)': lh_disk_size,
                          '创建时间': lh_created_time, '到期时间': lh_expired_time, '流量包大小(GB)': lh_tft, '流量包已用流量(GB)': lh_tfu,
                          '流量包剩余流量(GB)': lh_tfr})
csv_name = 'lh_{0}.csv'.format(strftime('%Y-%m-%d %H_%M_%S', localtime()))
dataframe.to_csv(csv_name, encoding='utf_8_sig')

print('导出完毕 文件名为{0}'.format(csv_name))
end = time()
print('本次代码执行共耗时:', round(end - start, 2), 's')

打开生成的文件 我们可以看到所有的轻量应用服务器配置均已被导出

(部分涉及隐私已以’” * “替代,请以实际导出文件为准)

ID

实例名

状态

地域

可用区

CPU(核数)

内存(GB)

操作系统

带宽(Mbps)

IPv4公网IP

IPv4内网IP

系统盘大小(GB)

创建时间

到期时间

流量包大小(GB)

流量包已用流量(GB)

流量包剩余流量(GB)

0

lhins-d*******

轻量2c4g8m免费升配

RUNNING

北京

3

4

4

Windows Server 2019 DataCenter 64bitCN

8

81.*.*.*

10.0.8.12

80

2021-02-22T05:30:46Z

2024-08-22T05:30:46Z

1200

0.39

1199.61

1

lhins-4*******

参与轻量征文活动拿好礼

RUNNING

中国香港

3

2

2

CentOS 7.9 64bit

30

43.*.*.*

10.0.8.12

30

2022-04-13T02:04:52Z

2022-05-13T02:07:38Z

1024

0.18

1023.82

2

lhins-1*******

参与轻量征文活动拿好礼

RUNNING

中国香港

3

2

2

CentOS 7.9 64bit

30

43.*.*.*

10.0.8.14

30

2022-04-13T02:04:45Z

2022-05-13T02:08:13Z

1024

0.23

1023.77

3

lhins-j*******

为居家程序员「送服」

RUNNING

上海

5

4

4

Windows Server 2019 DataCenter 64bitCN

8

124.*.*.*

10.0.16.8

80

2022-03-15T10:35:26Z

2022-04-15T10:35:26Z

1200

0.16

1199.84

4

lhins-j*******

轻量无忧计划

RUNNING

上海

4

1

2

CentOS 7.6 64bit

5

49.*.*.*

10.0.12.7

50

2021-10-23T11:24:58Z

2025-08-23T11:24:58Z

500

0.07

499.93

5

lhins-n*******

参与轻量征文活动拿好礼

RUNNING

新加坡

1

1

1

Ubuntu Server 20.04 LTS 64bit

30

43.*.*.*

10.0.0.10

25

2022-01-17T08:01:13Z

2022-06-17T08:01:13Z

1024

0.01

1023.99

6

lhins-1*******

参与轻量征文活动拿好礼

RUNNING

硅谷

2

2

2

CentOS 7.6 64bit

30

43.*.*.*

10.0.4.10

30

2022-01-17T08:01:20Z

2022-06-17T08:01:20Z

1024

0

1024

7

lhins-6*******

参与轻量征文活动拿好礼

RUNNING

东京

2

1

2

Ubuntu Server 20.04 LTS 64bit

30

43.*.*.*

10.0.4.6

50

2021-11-24T16:57:44Z

2022-11-24T16:57:44Z

2048

1.01

2046.99

8

lhins-0*******

参与轻量征文活动拿好礼

RUNNING

孟买

1

2

2

Ubuntu Server 20.04 LTS 64bit

30

129.*.*.*

10.0.0.9

30

2022-03-29T05:14:20Z

2022-06-29T05:14:20Z

1024

0.49

1023.51

9

lhins-b*******

参与轻量征文活动拿好礼

RUNNING

法兰克福

1

1

1

CentOS 7.6 64bit

30

162.*.*.*

10.0.0.9

25

2021-11-20T12:30:52Z

2022-06-20T12:30:52Z

1024

0.71

1023.29

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.准备工作
  • 1.SDK下载
  • 2.代码部分
相关产品与服务
云 API
云 API 是腾讯云开放生态的基石。通过云 API,只需少量的代码即可快速操作云产品;在熟练的情况下,使用云 API 完成一些频繁调用的功能可以极大提高效率;除此之外,通过 API 可以组合功能,实现更高级的功能,易于自动化, 易于远程调用, 兼容性强,对系统要求低。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档