通过调用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

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接