通过调用Vcenter-Api获取Vcenter中服务器信息

2024-04-11 21:04

本文主要是介绍通过调用Vcenter-Api获取Vcenter中服务器信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过调用Vcenter-Api获取Vcenter中服务器信息

文章目录

  • 通过调用Vcenter-Api获取Vcenter中服务器信息
  • 1. 获取Vmware API帮助文档
  • 2. 获取访问凭证
  • 3. 获取服务器清单
  • 4. 获取服务器更多信息
  • 5. 获取虚机更多信息
  • 6. 获取磁盘信息
  • 7. 获取操作系统相关

1. 获取Vmware API帮助文档

https://developer.vmware.com/apis/vsphere-automation/latest/

2. 获取访问凭证

文档对应url:https://developer.vmware.com/apis/vsphere-automation/latest/cis/api/session/post/
注意这里获取凭证应该是使用post方式
在这里插入图片描述
将调用地址复制出来:https://{api_host}/api/session
将{api_host}替换成我们实际Vcenter地址192.168.0.200
替换后就成了https://192.168.0.200/api/session
方法设置为POST
在这里插入图片描述

3. 获取服务器清单

url替换成https://192.168.0.200/api/vcenter/vm
方法改为GET
Headers中key为vmware-api-session-id
value为我们刚才拿到的token

在这里插入图片描述
这样我们就拿到了这个Vc上的服务器清单

4. 获取服务器更多信息

以下内容是通过https://192.168.0.200/api/vcenter/vm查询到的某一个服务器的信息

    {"memory_size_MiB": 8192,"vm": "vm-12311","name": "TEST-WEAPP","power_state": "POWERED_ON","cpu_count": 2},
key含义
memory_size_MiB虚拟机总内存
vm虚拟机ID(这个后续会用到)
name虚拟机在Vcenter中的名字
power_state电源状态
cpu_count虚拟机CPU个数

5. 获取虚机更多信息

方法GET,URL https://192.168.0.200/api/vcenter/vm/vm-12311
在这里插入图片描述
以下是返回的部分内容

{"instant_clone_frozen": false,"cdroms": {"16000": {"start_connected": false,"backing": {"iso_file": "[back01] ISO/Windows Server/2016_64.ISO","type": "ISO_FILE"},"allow_guest_control": true,"label": "CD/DVD drive 1","state": "CONNECTED","type": "SATA","sata": {"bus": 0,"unit": 0}}},"memory": {"hot_add_increment_size_MiB": 4,"size_MiB": 8192,"hot_add_enabled": true,"hot_add_limit_MiB": 131072},"cpu": {"hot_remove_enabled": false,"count": 2,"hot_add_enabled": true,"cores_per_socket": 1},"scsi_adapters": {"1000": {"pci_slot_number": 160,"scsi": {"bus": 0,"unit": 7},"label": "SCSI controller 0","sharing": "NONE","type": "LSILOGICSAS"}},"power_state": "POWERED_ON","floppies": {},
"disks": {"2000": {"scsi": {"bus": 0,"unit": 0},"backing": {"vmdk_file": "[data01] TEST-WEAPP/TEST-WEAPP-000001.vmdk","type": "VMDK_FILE"},"label": "Hard disk 1","type": "SCSI","capacity": 53687091200},"2001": {"scsi": {"bus": 0,"unit": 1},"backing": {"vmdk_file": "[data01] TEST-WEAPP/TEST-WEAPP_1-000001.vmdk","type": "VMDK_FILE"},"label": "Hard disk 2","type": "SCSI","capacity": 107374182400}},"nvme_adapters": {},"name": "TEST-WEAPP",
网卡信息,"boot": {"delay": 0,"retry_delay": 10000,"enter_setup_mode": false,"type": "BIOS","retry": false},"serial_ports": {},"boot_devices": [],"guest_OS": "WINDOWS_9_SERVER_64","hardware": {"upgrade_policy": "NEVER","upgrade_status": "NONE","version": "VMX_19"}
}

我们可以在这段json中拿到大部分关于这台服务器的信息,比如:

KEY含义
cdroms关于虚拟光驱的内容,可以看到我们这里用了ISO
memory内存详细信息
cpucpu相关信息
nics网卡的一些信息,这里我隐藏掉了
disks磁盘的一些信息

6. 获取磁盘信息

这里我们拿到了部分磁盘的信息,磁盘的总大小,还有存储位置
但和我们实际想要的内容是有差距的

"disks": {"2000": {"scsi": {"bus": 0,"unit": 0},"backing": {"vmdk_file": "[data01] TEST-WEAPP/TEST-WEAPP-000001.vmdk","type": "VMDK_FILE"},"label": "Hard disk 1","type": "SCSI","capacity": 53687091200},"2001": {"scsi": {"bus": 0,"unit": 1},"backing": {"vmdk_file": "[data01] TEST-WEAPP/TEST-WEAPP_1-000001.vmdk","type": "VMDK_FILE"},"label": "Hard disk 2","type": "SCSI","capacity": 107374182400}},

我们更像要的内容是,盘符,分区格式,磁盘总大小,剩余空间这些信息.
我们可以用GET方式取https://192.168.0.200/api/vcenter/vm/vm-12311/guest/local-filesystem
在这里插入图片描述

{"C:\\": {"mappings": [{"disk": "2000"}],"free_space": 16884203520,"filesystem": "NTFS","capacity": 53159653376},"D:\\": {"mappings": [{"disk": "2001"}],"free_space": 60841975808,"filesystem": "NTFS","capacity": 107371032576}
}
KEY含义
free_space可用空间KB
filesystem文件系统格式
capacity分区总大小KB
C:\或D:\Windows盘符
/home或则/datalinux盘符

现在我们可以很简单的通过遍历json进行简单的加工就能获取到我们想要的具体数据

7. 获取操作系统相关

get访问https://192.168.0.200/api/vcenter/vm/vm-12311/guest/identity

{"full_name": {"args": [],"default_message": "Microsoft Windows Server 2016 (64-bit)","id": "vmsg.guestos.windows444rver64Guest.label"},"name": "WINDOWS_9_SERVER_64","ip_address": "192.168.2.25","family": "WINDOWS","host_name": "TEST-WEAPP"
}
KEY含义
default_message操作系统版本
ip_address服务器ip地址
family操作系统类型
host_name服务器名

至此已经通过调用Vcenter-Api获取到了大部分Vcenter中服务器信息
后续完善到之前CMDB中去.总的来说Vcenter的信息需要多次从API中取出,会比云服务器稍微麻烦一点点

这篇关于通过调用Vcenter-Api获取Vcenter中服务器信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/895178

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

速盾:直播 cdn 服务器带宽?

在当今数字化时代,直播已经成为了一种非常流行的娱乐和商业活动形式。为了确保直播的流畅性和高质量,直播平台通常会使用 CDN(Content Delivery Network,内容分发网络)服务器来分发直播流。而 CDN 服务器的带宽则是影响直播质量的一个重要因素。下面我们就来探讨一下速盾视角下的直播 CDN 服务器带宽问题。 一、直播对带宽的需求 高清视频流 直播通常需要传输高清视频

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww