整体思路分4步
1.获得hypervisor中所有虚拟机的ID(使用listDomains方法)
2.根据虚拟机ID查询它的UUID(通过domainLookupByID方法)
3.根据UUID打印出虚拟机的详细信息XML文件(通过getXMLDesc方法)
4.在XML文件中提取source bridge标签中的内容,即这个虚拟机的虚拟网卡的vNic
package src; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.libvirt.Connect; import org.libvirt.Domain; import org.libvirt.LibvirtException; public class LibvirtTools { /** * 获得hypervisor链接,需要从配置文件读取hypervisor类型 * @return 链接名 */ public static Connect getConnection(){ Properties props = new Properties(); InputStream in; try { in = new BufferedInputStream (new FileInputStream("cfg.properties")); props.load(in); } catch (IOException e1) { e1.printStackTrace(); } String hypervisorName = props.getProperty("hypervisor"); //读取cfg.properties,获得hypervisor类型 Connect conn = null; try{ conn = new Connect(hypervisorName, true); } catch (LibvirtException e){ System.out.println("exception caught:"+e); System.out.println(e.getError()); } return conn; //得到链接并返回 } /** * 得到hypervisor中,所有虚拟机的uuid * @return 所有uuid组成的list */ public List<String> getAllUuidInDomain(){ Connect conn = getConnection(); List<String> uuidlist = new ArrayList<String>(); try{ int[] domainid = conn.listDomains(); //首先通过listDomains方法得到所有活跃Domain的ID列表 System.out.println(domainid[0]); for(int i = 0 ; i < domainid.length ; i++){ Domain dom = conn.domainLookupByID(domainid[i]); uuidlist.add(dom.getUUIDString()); } //通过Domainid得到Domain,再把所有domain的uuid加入到uuidlist中返回 } catch (LibvirtException e){ System.out.println("exception caught:"+e); System.out.println(e.getError()); } System.out.println(uuidlist.get(0)); return uuidlist; } /** * 根据一个虚拟机的uuid,得到这个虚拟机上虚拟网卡端口的vNic,这里暂时没有考虑一台虚拟机有多个网卡端口的情况 * @param Uuid * @return */ public String getVnicByUuid(String uuid){ Connect conn = getConnection(); String xml = null; String vnic = null; try{ Domain testDomain = conn.domainLookupByUUIDString(uuid); //根据虚拟机的uuid得到描述这个虚拟机的xml文件 xml = testDomain.getXMLDesc(0); String temp = xml.substring(xml.indexOf("source bridge")).substring(0, xml.substring(xml.indexOf("source bridge")).indexOf("/>")); vnic = temp.substring(temp.indexOf("'")+1 , temp.lastIndexOf("'")); //从xml文件中,读取出VNIC,vnic在source bridge标签中 System.out.println(vnic); } catch (LibvirtException e){ System.out.println("exception caught:"+e); System.out.println(e.getError()); } return vnic; } public static void main(String[] args) { LibvirtTools lt = new LibvirtTools(); lt.getAllUuidInDomain(); lt.getVnicByUuid("6de933ac-374e-43c9-b7c6-cbbb055b2e44"); //lt.getVnicByUuid("19f96615-df43-4604-a361-cbc1cf8372e0"); } }
相关推荐
libvirt-java则通过Java语言封装了这个库,使得Java开发者能够利用其丰富的类库和API,以面向对象的方式处理虚拟机的创建、管理、监控等任务。 在libvirt-java 0.4.7版本中,主要包含以下几个核心组件: 1. **连接...
jna包的包含意味着该压缩包中的libvirt-java-devel可能用于Java开发环境中,允许Java开发者通过libvirt API来管理虚拟机。 整个安装过程分为两个步骤。首先需要解压tar.gz压缩包,解压后将得到一个包含多个rpm包的...
libvirt-java则是一个libvirt的Java绑定,允许Java程序以编程方式管理虚拟机和虚拟化资源。libvirt-java-0.4.9-4.el7版本的rpm包是适用于Red Hat Enterprise Linux(RHEL)7.x版本的x86_64架构的软件安装包。 安装...
libvirt java绑定包 提供java API
编译后直接可用的libvirt-java.jar,java监控虚拟机的必要jar包
libvirt是一个开源的库,允许对虚拟机、虚拟机管理程序、以及相关的虚拟化技术进行管理。文档作为项目的重要组成部分,不仅能够帮助开发者更好地理解代码结构、类和方法的用途,还可以用来作为代码维护和扩展的参考...
libvirt-client-0.10.2-62.el6.x86_64.rpm libvirt-client-0.10.2-62.el6.x86_64.rpm
libvirt-devel-4.5.0-10.el7.x86_64.rpm
其余RPM包文件名中的“libvirt-libs”表示包含libvirt库文件,而“libvirt-daemon”是libvirt守护进程,而“libvirt-daemon-driver-qemu”是负责管理QEMU虚拟机的驱动程序,这也是标题中提到的文件。其他文件如...
libvirt-snmp 是一个专为虚拟化环境设计的网络管理接口工具,它允许用户通过简单网络管理协议(SNMP)来监控和管理虚拟机网络流量。该工具提供了对libvirt库的扩展,使SNMP支持成为可能,从而使得管理员可以利用广泛...
- **测试套件**: `libvirt-test-API` 是一个基于 Python 的测试套件,目标是实现功能回归测试,确保 `libvirt` 的稳定性和兼容性。 - **编写测试案例**: 该文档还提供了一些指导如何编写测试案例的方法。 #### ...
libvirt-docs-4.5.0-36.el7.x86_64.rpm
libvirt是一个广泛使用的开源接口和守护进程,用于管理虚拟化平台的虚拟机和虚拟化资源。在此处,文件名中的“libvirt-daemon-driver-lxc”特指与Linux容器(LXC)相关的驱动程序版本4.5.0。文件中还包括了版本号...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用
此外,libvirt-daemon-config-network包还依赖于libvirt-libs包以及其他一些驱动相关的rpm包,如libvirt-daemon、libvirt-daemon-driver-qemu、libvirt-daemon-driver-storage-core、libvirt-daemon-driver-network...
kvm-4.5.0-36.el7_9.5.x64-86.rpm.tar.gz,该文件是一个tar.gz压缩包,包含了多个rpm文件,这些文件共同构成了libvirt-daemon-kvm的软件组件,用于在基于Red Hat Enterprise Linux 7 (RHEL 7)的系统上管理虚拟机。...
官方离线安装包,亲测可用
libvirt是一个用于管理虚拟化平台的管理工具集,包括了对虚拟机、存储和网络的管理功能。本文提到的rpm包包含了libvirt的网络驱动部分,以及其它一些相关组件。 首先,文件中包含的rpm包用于在基于Red Hat的系统,...
具体到这个压缩包,它包含了libvirt项目中与虚拟机网络接口(interface)相关联的驱动程序安装文件。libvirt-daemon-driver-interface-4.5.0-36.el7_9.5.x86_64.rpm文件是该驱动程序的RPM安装包。同时,还包含了其他...