获取磁盘信息:
import sys
import libvirt
from xml.dom import minidom
domName = 'Fedora22-x86_64-1'
conn = None
try:
conn = libvirt.open("qemu:///system")
except libvirt.libvirtError as e:
print(repr(e), file=sys.stderr)
exit(1)
dom = conn.lookupByID(1)
if dom == None:
print('Failed to find the domain '+domName, file=sys.stderr)
exit(1)
raw_xml = dom.XMLDesc(0)
xml = minidom.parseString(raw_xml)
diskTypes = xml.getElementsByTagName('disk')
for diskType in diskTypes:
print('disk: type='+diskType.getAttribute('type')+' device='+diskType.getAttribute('device'))
diskNodes = diskType.childNodes
for diskNode in diskNodes:
if diskNode.nodeName[0:1] != '#':
print(' '+diskNode.nodeName)
for attr in diskNode.attributes.keys():
print(' '+diskNode.attributes[attr].name+' = '+
diskNode.attributes[attr].value)
conn.close()
exit(0)
<domain type='kvm'>
...
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/var/lib/libvirt/images/RHEL7.1-x86_64-1.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
...
</domain>
获取网络信息
import sys
import libvirt
from xml.dom import minidom
domName = 'Fedora22-x86_64-1'
conn = None
try:
conn = libvirt.open("qemu:///system")
except libvirt.libvirtError as e:
print(repr(e), file=sys.stderr)
exit(1)
dom = conn.lookupByID(1)
if dom == None:
print('Failed to find the domain '+domName, file=sys.stderr)
exit(1)
raw_xml = dom.XMLDesc(0)
xml = minidom.parseString(raw_xml)
interfaceTypes = xml.getElementsByTagName('interface')
for interfaceType in interfaceTypes:
print('interface: type='+interfaceType.getAttribute('type'))
interfaceNodes = interfaceType.childNodes
for interfaceNode in interfaceNodes:
if interfaceNode.nodeName[0:1] != '#':
print(' '+interfaceNode.nodeName)
for attr in interfaceNode.attributes.keys():
print(' '+interfaceNode.attributes[attr].name+' = '+
interfaceNode.attributes[attr].value)
conn.close()
exit(0)
<domain type='kvm'>
...
<interface type='network'>
<mac address='52:54:00:94:f0:a4'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
...
</domain>
获取鼠标,键盘等xml信息
import sys
import libvirt
from xml.dom import minidom
domName = 'Fedora22-x86_64-1'
conn = None
try:
conn = libvirt.open("qemu:///system")
except libvirt.libvirtError as e:
print(repr(e), file=sys.stderr)
exit(1)
dom = conn.lookupByID(1)
if dom == None:
print('Failed to find the domain '+domName, file=sys.stderr)
exit(1)
raw_xml = dom.XMLDesc(0)
xml = minidom.parseString(raw_xml)
devicesTypes = xml.getElementsByTagName('input')
for inputType in devicesTypes:
print('input: type='+inputType.getAttribute('type')+' bus='+inputType.getAttribute('bus'))
inputNodes = inputType.childNodes
for inputNode in inputNodes:
if inputNode.nodeName[0:1] != '#':
print(' '+inputNode.nodeName)
for attr in inputNode.attributes.keys():
print(' '+inputNode.attributes[attr].name+' = '+
inputNode.attributes[attr].value)
conn.close()
exit(0)
<domain type='kvm'>
...
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
...
</domain>