google-cloud-platform - 如何获取 GCP 中所有项目的所有 VM 信息
问题描述
如何获取 GCP 中所有项目的所有 VM 信息。
我的 GCP 帐户中有多个项目,我需要 GCP 中所有项目的所有 VM 的操作系统、操作系统版本和操作系统的构建版本。
解决方案
我没有找到一个工具,所以我编写了一些你可以使用的代码。此代码必须改进,但在这里您可以找到一种方法来扫描所有项目并获取有关操作系统的信息。
让我知道它是否对您有帮助。
点安装:
!pip install google-cloud
!pip install google-api-python-client
!pip install oauth2client
代码:
import subprocess
import sys
import logging
import threading
import pprint
logger = logging.Logger('catch_all')
def execute_bash(parameters):
try:
return subprocess.check_output(parameters)
except Exception as e:
logger.error(e)
logger.error('ERROR: Looking in jupyter console for more information')
def scan_gce(project, results_scan):
print('Scanning project: "{}"'.format(project))
ex = execute_bash(['gcloud','compute', 'instances', 'list', '--project', project, '--format=value(name,zone, status)'])
list_result_vms = []
if ex:
list_vms = ex.decode("utf-8").split('\n')
for vm in list_vms:
if vm:
vm_info = vm.split('\t')
print('Scanning Instance: "{}" in project "{}"'.format(vm_info[0], project))
results_bytes = execute_bash(['gcloud', 'compute', '--project',project,
'ssh', '--zone', vm_info[1], vm_info[0],
'--command', 'cat /etc/*-release' ])
if results_bytes:
results = results_bytes.decode("utf-8").split('\n')
list_result_vms.append({'instance_name': vm_info[0],'result':results})
results_scan.append({'project':project, 'vms':list_result_vms})
list_projects = execute_bash(['gcloud','projects', 'list', '--format=value(projectId)']).decode("utf-8").split('\n')
threads_project = []
results_scan = []
for project in list_projects :
t = threading.Thread(target=scan_gce, args=(project, results_scan))
threads_project.append(t)
t.start()
for t in threads_project:
t.join()
for result in results_scan:
pprint.pprint(result)
你可以在这里找到完整的代码:
推荐阅读
- php - How to make multiple where clause and get just only the first
- swift - 滚动视图中的硬编码文本/标签
- c# - MongoDB C#将嵌入对象序列化为展平对象
- angular - 脏事件代替触摸事件触发
- typescript - SIP 和 TEL 链接在 Internet Explorer 中不起作用
- javascript - 如何验证动态创建的表的每一行?
- git - 如何从索引中删除一些文件并将其余文件推送到远程存储库?
- python - 获取当前登录的用户到评论表单
- android - 如何在 2019 年使用 Windows 10 从 CRT 创建 BKS 文件
- typescript - 初始化时如何在Vuex中动态设置初始状态(使用“if”)?