Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
#! /usr/bin/python ## virnetinfo.py utility v.0.1.0 import libvirt import sys import os import libxml2 import pdb def usage(): print 'Usage: %s list | {addr|brname|fwdmode|fwddev} VIRNET' % sys.argv[0] def print_xml(ctx, path): res = ctx.xpathEval(path) if res is None or len(res) == 0: value="Unknown" else: value = res[0].content return value def get_context(name): try: nw = conn.networkLookupByName(name) # Annoyiingly, libvirt prints its own error message here except libvirt.libvirtError: print "Network %s does not exist" % name sys.exit(1) xmldesc = nw.XMLDesc(0) doc = libxml2.parseDoc(xmldesc) ctx = doc.xpathNewContext() return ctx def print_ip_address(name): ctx = get_context(name) print "%s\t%s" % (print_xml(ctx, "/network/ip/@address"), print_xml(ctx, "/network/ip/@netmask")) def print_brname(name): ctx = get_context(name) print print_xml(ctx, "/network/bridge/@name") def print_fwdmode(name): ctx = get_context(name) print print_xml(ctx, "/network/forward/@mode") def print_fwddev(name): ctx = get_context(name) print print_xml(ctx, "/network/forward/@dev") def print_active_networks(): try: networks = conn.listNetworks() except libvirt.libvirtError: print "libvirt is not runing" return 1 for n in networks: print n # Main procedure if len(sys.argv) < 2: usage() sys.exit(2) # Connect to libvirt conn = libvirt.openReadOnly(None) if conn == None: print 'Failed to open connection to the hypervisor' sys.exit(1) act = sys.argv[1] if act == "list": print_active_networks() sys.exit(0) else: if len(sys.argv) != 3: usage() sys.exit(2) name = sys.argv[2] if act == "addr": print_ip_address(name) sys.exit(0) elif act == "brname": print_brname(name) sys.exit(0) elif act == "fwdmode": print_fwdmode(name) sys.exit(0) elif act == "fwddev": print_fwddev(name) sys.exit(0) else: usage() sys.exit(2)