如何用pyVmomi实现esxcli software sources vib get功能并获取VIB URL?
解决pyVmomi获取ESXi特定VIB详细信息(对应
esxcli software sources vib get)的问题 核心对应关系与问题原因
esxcli software sources vib get对应的pyVmomi并行API是直接调用EsxCli接口执行该命令,而非使用imageConfigManager.fetchSoftwarePackages()——后者仅用于获取主机已安装的软件包元数据,不包含仓库源中的VIB信息,这就是你拿到的referenceurl为空的根本原因。
Python实现代码示例
- 连接ESXi并获取EsxCli实例:
from pyVim.connect import SmartConnect, Disconnect import ssl # 忽略SSL证书验证(生产环境建议配置合法证书) context = ssl._create_unverified_context() si = SmartConnect(host="ESXI_HOST_IP", user="USERNAME", pwd="PASSWORD", sslContext=context) # 获取EsxCli操作对象 esx_cli = si.content.esxManager.esxCli
- 调用
software.sources.vib.get获取目标VIB信息:
# 方式1:按VIB名称查询 vib_details = esx_cli.software.sources.vib.get(name="target-vib-name") # 方式2:按仓库源URL查询该源下的所有VIB # vib_details = esx_cli.software.sources.vib.get(source="http://your-repo-url") # 解析并输出VIB属性 for vib in vib_details: print(f"VIB名称: {vib.Name}") print(f"版本: {vib.Version}") print(f"发布者: {vib.Vendor}") print(f"源URL: {vib.SourceUrl}") print(f"参考URL: {vib.ReferenceUrl}")
关键提示
直接通过EsxCli调用的逻辑和你原Ruby脚本中RbVmomi的调用完全对齐,能准确获取仓库源中VIB的完整属性,包括你需要的ReferenceUrl。
内容的提问来源于stack exchange,提问作者donny gat
相关产品推荐
相关产品推荐

