Python virsh替代品(libvirt)
我正在使用virsh list显示计算机上运行的虚拟机列表。我希望在这个过程中以2d数组的形式打印信息 一种方法是获得输出,使用标记器并将其存储在数组中。但是,是否有其他方法可以直接将其转换为数组或其他形式,从而使代码更具可伸缩性。(我能想到的是在python中使用libvirtapi)确实有Python virsh替代品(libvirt),python,list,virtual-machine,libvirt,Python,List,Virtual Machine,Libvirt,我正在使用virsh list显示计算机上运行的虚拟机列表。我希望在这个过程中以2d数组的形式打印信息 一种方法是获得输出,使用标记器并将其存储在数组中。但是,是否有其他方法可以直接将其转换为数组或其他形式,从而使代码更具可伸缩性。(我能想到的是在python中使用libvirtapi)确实有 import libvirt conn = libvirt.openReadOnly(None) # $LIBVIRT_DEFAULT_URI, or give a URI here assert c
import libvirt
conn = libvirt.openReadOnly(None) # $LIBVIRT_DEFAULT_URI, or give a URI here
assert conn, 'Failed to open connection'
names = conn.listDefinedDomains()
domains = map(conn.lookupByName, names)
ids = conn.listDomainsID()
running = map(conn.lookupByID, ids)
columns = 3
states = {
libvirt.VIR_DOMAIN_NOSTATE: 'no state',
libvirt.VIR_DOMAIN_RUNNING: 'running',
libvirt.VIR_DOMAIN_BLOCKED: 'blocked on resource',
libvirt.VIR_DOMAIN_PAUSED: 'paused by user',
libvirt.VIR_DOMAIN_SHUTDOWN: 'being shut down',
libvirt.VIR_DOMAIN_SHUTOFF: 'shut off',
libvirt.VIR_DOMAIN_CRASHED: 'crashed',
}
def info(dom):
[state, maxmem, mem, ncpu, cputime] = dom.info()
return '%s is %s,' % (dom.name(), states.get(state, state))
print 'Defined domains:'
for row in map(None, *[iter(domains)] * columns):
for domain in row:
if domain:
print info(domain),
print
print
print 'Running domains:'
for row in map(None, *[iter(running)] * columns):
for domain in row:
if domain:
print info(domain),
print