python-3.x - 使用 pyvmomi 从关机状态启动虚拟机
问题描述
因此,我正在尝试使用 pyvmomi 制作一个 Python 脚本来控制我在 ESXi 服务器上运行的虚拟机的状态。基本上,我尝试使用connection.content.searchIndex.FindByIp(ip="the ip of the VM", vmSearch=True)
抓取我的虚拟机然后打开它,但是当它关闭时我当然无法获得虚拟机的 IP。所以,我想知道是否有任何方法可以获得虚拟机,也许是通过名称或它的 ID?我搜索了很多,但找不到真正的解决方案。无论哪种方式,这是我到目前为止的代码:
from pyVim import connect
# Connect to ESXi host
connection = connect.Connect("192.168.182.130", 443, "root", "password")
# Get a searchIndex object
searcher = connection.content.searchIndex
# Find a VM
vm = searcher.FindByIp(ip="192.168.182.134", vmSearch=True)
# Print out vm name
print (vm.config.name)
# Disconnect from cluster or host
connect.Disconnect(connection)
解决方案
此代码可能会有所帮助:
from pyVim.connect import SmartConnect
from pyVmomi import vim
import ssl
s=ssl.SSLContext(ssl.PROTOCOL_TLSv1)
s.verify_mode=ssl.CERT_NONE
si= SmartConnect(host="192.168.100.10", user="admin", pwd="admin123",sslContext=s)
content=si.content
def get_all_objs(content, vimtype):
obj = {}
container = content.viewManager.CreateContainerView(content.rootFolder, vimtype, True)
for managed_object_ref in container.view:
obj.update({managed_object_ref: managed_object_ref.name})
return obj
vmToScan = [vm for vm in get_all_objs(content,[vim.VirtualMachine]) if "ubuntu-16.04.4" == vm.name]
推荐阅读
- flutter - 颤振中的每日定期通知
- amazon-dynamodb - dynamodb 高效读取容量
- javascript - 获取nodejs中上传的图片url
- powershell - VS Code 中的默认输出文件存储在 UTF 16 LE 中,而默认设置为 UTF-8
- authentication - Jmeter:登录后我可以需要 100 个用户来检查仪表板吗
- c# - 如何在 Visual Studio 中将 .NET Framework 更改为 .NET Standard/Core?
- azure - Azure OMS 警报 - 将图表作为 OMS 警报的一部分发送到电子邮件
- reactjs - 在 bitbucket 上使用 testcafe 运行 e2e 测试
- javascript - 待办事项列表中的删除按钮 (HTML/JS)
- r - 数据整理:在不使用 R 中的 for 循环的情况下,从不同结构的 data.frame 创建时间序列数据的最佳方法