2024-05-17 05:27:51 发布
网友
我正在使用virsh list来显示计算机上运行的vm的列表。我想把这个过程中的信息以二维数组的形式打印出来。
一种方法是获得输出,使用标记器并将其存储在数组中。但是,有没有其他方法可以直接将其转换成数组或其他形式,从而使代码更具可伸缩性。(我可以想到的是在python中使用libvirt api)
确实有libvirt Python API bindings。
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
确实有libvirt Python API bindings。
相关问题 更多 >
编程相关推荐