通过pyVmomi获取vmId

2024-10-01 15:47:28 发布

您现在位置:Python中文网/ 问答频道 /正文

目前Im正在使用vim-cmd在我的VMware center中执行多个操作。在

我正在使用SSH paramiko模块连接并检索vim-cmd命令状态:

vim-cmd vmsvc/getallvms
vim-cmd vmsvc/power.getstate 13
vim-cmd vmsvc/power.on 13
vim-cmd vmsvc/power.off 13
vim-cmd vmsvc/destroy 13

我想使用pyVmomi库来运行一些命令,为此需要提供vmId标识符:

^{pr2}$

我可以使用什么命令来获取vmId?在


Tags: 模块命令cmdparamiko状态vimsshvmware
2条回答

您所称的vmid称为ManagedObjectReference或mor,或moref(在vSphereWeb服务API的上下文中)。有了pyVmomi,有两种方法可以获得更多。一种是直接打印对象。该方法将以一种格式打印moref,以便它给ManagedO对象类型:更像下面。另一种方法,如果你只想得到更多,你可以访问虚拟机。下面是一个使用数据中心对象的示例。在

from pyVim.connect import SmartConnect
from pyVmomi import vim
si = SmartConnect(host='10.12.254.137', user='administrator@vsphere.local', pwd='password')
content = si.RetrieveContent()
children = content.rootFolder.childEntity
for child in children:
    print child

'vim.Datacenter:datacenter-33'
'vim.Datacenter:datacenter-2'
children[0].name
'1000110'
dc = vim.Datacenter('datacenter-33')
dc._stub = si._stub
dc.name
'1000110'

如果您想使用一个对象的moref来访问它,那么请按照我提供的示例进行操作。大约一年前,我在我的博客here上讨论过这个问题。你可以看看那篇文章来获得更深入的解释。在

我也遇到过同样的事情,
我知道已经有一段时间了,但我建议
hack对我很好,希望你能用它。

buf = ("%s" % (vm.summary.vm))

比如说

^{pr2}$

现在,我们希望提取数字,对于python3,建议使用正则表达式。在

import re #regular expression
re.findall('\d+', buf)

结果是一个包含1个元素的列表

'11'
type(buf)<br/>
<class 'list'>

相关问题 更多 >

    热门问题