首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过vmId通过pyVmomi获取

通过vmId通过pyVmomi获取
EN

Stack Overflow用户
提问于 2015-11-15 08:22:35
回答 2查看 4.6K关注 0票数 1

目前,我使用vim-cmd在我的VMware中心执行多个操作。

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

代码语言:javascript
复制
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标识符:

代码语言:javascript
复制
from pyvim import connect
from pyVmomi import vim
from pyVmomi import vmodl

vim-cmd vmsvc/get.summary 13
Listsummary:

(vim.vm.Summary) {
   dynamicType = <unset>, 
   vm = 'vim.VirtualMachine:13', 

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-20 08:16:38

您所称的vmid称为ManagedObjectReference或mor,或更多(在vSphere Web的上下文中)。对于pyVmomi,有几种方法可以获得更多的信息。一种是打印物体。该方法将以这样的格式打印moref,从而给出ManagedObjectType:moref,如下所示。另一种方式,如果您只想要实际的更多,您可以访问vm._moId。下面是一个使用Datacenter对象的示例。

代码语言:javascript
复制
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访问对象,请按照我提供的示例进行操作。大约一年前,我在我的博客这里上报道了这个消息。您可以查看这篇文章,以获得更深入的解释。

票数 4
EN

Stack Overflow用户

发布于 2017-11-15 19:50:25

我也遇到过同样的事情,

我知道已经有一段时间了,但我建议

这对我来说很好,我希望你能用。

代码语言:javascript
复制
buf = ("%s" % (vm.summary.vm))

举个例子

代码语言:javascript
复制
vim.VirtualMachine:11

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

代码语言:javascript
复制
import re #regular expression
re.findall('\d+', buf)

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

'11‘

type(buf)<br/>

<class 'list'>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33717752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档