使用pyVmomi获取vCenter网络的IP

时间:2018-01-22 16:32:36

标签: python vmware pyvmomi

我使用pyVmomi在vCenter上创建VM。我们有几个网络,比如' PRD-DB'。我可以将VM的网络接口更改为' PRD-DB'使用pyVmomi。

我知道这个网址是10.125.10.0/24。但我找不到使用pyVmomi获取此网络IP地址的方法。什么将IP链接到网络?

[编辑]更准确一点:如何检索可以分配给VM网卡的可用VLAN列表?我可以检索与这些VLAN对应的网络地址吗?

1 个答案:

答案 0 :(得分:0)

您是否只是想获取每个虚拟机的IP地址?

如果是这样,您可以在vim.VirtualMachine上使用CreateContainerView通过来宾对象从vCentre获取每个VM的IP地址。尽管您将需要安装VMWare Tools才能收集来宾对象中的大多数信息。

serviceInstance = SmartConnect(host=host,user=user,pwd=password,port=443)
atexit.register(Disconnect, serviceInstance)
content = serviceInstance.RetrieveContent()
vm_view = content.viewManager.CreateContainerView(content.rootFolder,[vim.VirtualMachine],True)

# Loop through the vms and print the ipAddress
for vm in vm_view.view:
    print(vm.guest.ipAddress)

如果您尝试执行更高级的方法,我建议您遵循vmware github页面上提供的getvnicinfo.py示例。实际上,这是通过更详细的视图来获取每个VM的信息。尽管这似乎没有提供IP地址。

要查看主机可用的VLAN,请遵循以下示例。

hosts = content.viewManager.CreateContainerView(content.rootFolder,[vim.HostSystem],True) 
for host in hosts.view:
    for network in host.network:
        switch = network.config.distributedVirtualSwitch
        for portgroup in switch.portgroup:
            print(portgroup.name) # This will print the vlan names