云计算平台中获取虚拟机ip地址方法与系统的制作方法

文档序号:7809063阅读:178来源:国知局
云计算平台中获取虚拟机ip地址方法与系统的制作方法
【专利摘要】本发明提供一种云计算平台中获取虚拟机IP地址方法与系统,与云计算平台中的libvirt模块建立连接,通过云计算平台中libvirt模块,获取云计算平台中虚拟机列表,再通过libvirt模块,获取云计算平台中虚拟机名称,之后获取所述云计算平台中虚拟机运行状态,最后根据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址。整个过程中,借助libvirt模块依次获取虚拟机列表、名称以及运行状态,再通过云计算平台内置的shell命令,获取虚拟机的IP地址,简单、严谨的处理过程能够高效、准确自动获取虚拟机的IP地址,提高虚拟机在与其他设备进行数据交互时的效率,便于云计算平台后台的管控。
【专利说明】云计算平台中获取虚拟机IP地址方法与系统

【技术领域】
[0001] 本发明涉及计算机软件【技术领域】,特别是涉及云计算平台中获取虚拟机IP地址 方法与系统。

【背景技术】
[0002] 随着桌面虚拟化技术的发展,目前已有越来越多的公司和企业开始部署桌面虚拟 化系统。在虚拟化桌面的部署及应用过程中,如何对这些桌面系统进行管理又成为了一个 新的问题,比如在部署的过程中,为了获得活动的虚拟机的运行状态,后台管理程序需要不 断和虚拟机进行通信。
[0003] 在目前主流的linux系统上Qemu-kvm桌面虚拟化云计算平台上,已有一个开源的 管理模块即libvirt模块,后台管理程序可通过libvirt模块提供的一系列接口来对虚拟 机进行管理,比如,虚拟机的复制、克隆等功能,但目前的libvirt模块没有提供获取虚拟 机IP地址的功能。在Qemu-kvm桌面虚拟化平台上,一般,虚拟机的IP为自动获取模式,即 在虚拟机每次重启后,可能获取到不同的IP,在此背景下,后台管理程序想要任何时刻都能 和虚拟机系统进行通信则非常困难,因为虚拟机的IP地址总在变化。
[0004] 无法自动获取虚拟机变化的IP地址,使得虚拟机在与其他设备进行数据交互时 效率低下,不利于云计算平台后台的管控。


【发明内容】

[0005] 基于此,有必要针对无法自动获取虚拟机变化的IP地址,使得虚拟机在与其他设 备进行数据交互时效率低下,不利于云计算平台后台的管控的问题,提供一种云计算平台 中获取虚拟机IP地址方法与系统,自动获取虚拟机变化的IP地址,提高虚拟机在与其他设 备进行数据交互时的效率,便于云计算平台后台的管控。
[0006] 一种云计算平台中获取虚拟机IP地址方法,包括步骤:
[0007] 与云计算平台中的libvirt模块建立连接;
[0008] 通过所述libvirt模块,获取云计算平台中虚拟机列表;
[0009] 根据所述虚拟机列表,通过所述libvirt模块,获取云计算平台中虚拟机名称;
[0010] 根据所述云计算平台中虚拟机名称,通过所述libvirt模块,获取云计算平台中 虚拟机运行状态;
[0011] 根据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址,其中,所 述shell命令为内置于所述云计算平台的指令。
[0012] 一种云计算平台中获取虚拟机IP地址系统,包括:
[0013] 连接建立模块,用于与云计算平台中的libvirt模块建立连接;
[0014] 虚拟机列表获取模块,用于通过所述libvirt模块,获取云计算平台中虚拟机列 表;
[0015] 虚拟机名称获取模块,用于根据所述虚拟机列表,通过所述libvirt模块,获取云 计算平台中虚拟机名称;
[0016] 虚拟机运行状态获取模块,用于根据所述云计算平台中虚拟机名称,通过所述 libvirt模块,获取云计算平台中虚拟机运行状态;
[0017] IP地址获取模块,用于根据所述虚拟机运行状态,调用shell命令,获取所述虚拟 机的IP地址,其中,所述shell命令为内置于所述云计算平台的指令。
[0018] 本发明云计算平台中获取虚拟机IP地址方法与系统,与云计算平台中的libvirt 模块建立连接,通过云计算平台中libvirt模块,获取云计算平台中虚拟机列表,再通过 libvirt模块,获取云计算平台中虚拟机名称,之后获取所述云计算平台中虚拟机运行状 态,最后根据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址。整个过 程中,借助libvirt模块依次获取虚拟机列表、名称以及运行状态,再通过云计算平台内置 的shell命令,获取虚拟机的IP地址,简单、严谨的处理过程能够高效、准确自动获取虚拟 机的IP地址,提高虚拟机在与其他设备进行数据交互时的效率,便于云计算平台后台的管 控。

【专利附图】

【附图说明】
[0019] 图1为本发明云计算平台中获取虚拟机IP地址方法的第一个实施例的流程示意 图;
[0020] 图2为本发明云计算平台中获取虚拟机IP地址方法的第二个实施例的流程示意 图;
[0021] 图3为本发明云计算平台中获取虚拟机IP地址系统的第一个实施例的结构示意 图;
[0022] 图4为本发明云计算平台中获取虚拟机IP地址系统的第二个实施例的结构示意 图。

【具体实施方式】
[0023] 为了使本发明的目的、技术方案及优点更加清楚明白,以下根据附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施仅仅用以解释本发明,并不 限定本发明。
[0024] 如图1所示,一种云计算平台中获取虚拟机IP地址方法,包括步骤:
[0025] S100 :与云计算平台中的libvirt模块建立连接。
[0026] 云计算平台可以是多种操作系统的下的虚拟平台,例如linux操作系统上的 Qemu-kvm虚拟化平台。libvirt是一套免费、开源的支持Linux下主流虚拟化工具的C函 数库,其旨在为包括Xen在内的各种虚拟化工具提供一套方便、可靠的编程接口,支持与C, C++,Ruby, Python等多种主流开发语言的绑定。在在下述实施例中,云计算平台将选用 linux操作系统上的Qemu-kvm虚拟化平台为例进行解释说明。步骤S100的一个实施例步 骤为:程序启动后,通过调用libvirt模块的virConnectOpen接口和libvirt模块建立连 接。当建立连接成功时,进行下一步操作,当建立连接失败时,程序退出。
[0027] S200 :通过所述libvirt模块,获取云计算平台中虚拟机列表。
[0028] 在其中一个具体实施例中,步骤S200的详细步骤为:程序通过调用libvirt模 块的virConnectListDefinedDomains接口,获取目前系统中已创建的虚拟机数量,此数 据包括处于已启动和未启动状态的所有虚拟机数量,程序再通过调用libvirt模块的 virConnectListAllDomains接口,获取目前系统中已创建的虚拟机列表。
[0029] S300 :根据所述虚拟机列表,通过所述libvirt模块,获取云计算平台中虚拟机名 称。
[0030] 根据虚拟机列表,程序对每一个虚拟机循环调用libvirt模块的 virDomainGetName接口,从而获得列表中的虚拟机名称。若成功获取,则进行下一步操作, 若获取失败,则返回进入步骤S100,执行步骤S200以及本步骤S300操作。
[0031] S400 :根据所述云计算平台中虚拟机名称,通过所述libvirt模块,获取云计算平 台中虚拟机运行状态。
[0032] 根据已经获得的虚拟机名称,程序进一步通过调用libvirt模块的 virDomainGetlnfo接口获取当前循环的虚拟机的运行状态,若成功获取,则进行下一步操 作,若获取失败,则返回进入步骤S100,之后执行步骤S200以及步骤S300操作。
[0033] S500 :根据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址,其 中,所述shell命令为内置于所述云计算平台的指令。
[0034] 本发明云计算平台中获取虚拟机IP地址方法,与云计算平台中的libvirt模块建 立连接,通过云计算平台中libvirt模块,获取云计算平台中虚拟机列表,再通过libvirt 模块,获取云计算平台中虚拟机名称,之后获取所述云计算平台中虚拟机运行状态,最后根 据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址。整个过程中,借助 libvirt模块依次获取虚拟机列表、名称以及运行状态,再通过云计算平台内置的shell命 令,获取虚拟机的IP地址,简单、严谨的处理过程能够高效、准确自动获取虚拟机的IP地 址,提高虚拟机在与其他设备进行数据交互时的效率,便于云计算平台后台的管控。
[0035] 如图2所示,在其中一个实施例中,步骤S500具体包括步骤:
[0036] S520 :以所述云计算平台中虚拟机名称为参数,调用shell命令,从所述虚拟机运 行状态中分别读取每台所述虚拟机的运行状态参数。
[0037] S540 :根据每台所述虚拟机的运行状态参数,调用shell命令,查找当前运行的虚 拟机网卡的物理地址。
[0038] S560 :根据所述当前运行的虚拟机网卡的物理地址,调用shell命令,获取所述当 前运行的虚拟机的IP地址。
[0039] 采用严谨的处理过程,确保获得IP地址的准确。
[0040] 下面将用shell命令中的一种实现方式getipaddress脚本为例详细说明上述 S520、S540以及S560的详细过程。
[0041] 步骤一 :"getipaddress"脚本执行时,首先接收虚拟机名称P1,以P1作为参数继 续执行virsh shell工具中的dumpxml命令,读取当前运行的虚拟机的运行信息Ml。
[0042] 步骤二:根据步骤一中得到的虚拟机运行信息M1,以"MAC address"为关键字,继 续调用grep和sed这两个shell命令,在Ml查找,得到当前虚拟机网卡的物理地址M2。
[0043] 步骤三:根据步骤二中得到的虚拟机,物理地址M2,并以M2为参数,继续调用cat、 grep和awk这三个shell命令,在/var/log/messages文件中进行查找,得到M2所属的当 前虚拟机的唯一的IP地址信息M3。
[0044] 如图2所示,在其中一个实施例中,步骤S200具体包括步骤:
[0045] S220 :通过所述libvirt模块,获取所述云计算平台中虚拟机的数量;
[0046] S240 :根据所述虚拟机的数量,通过所述libvirt模块,获取所述云计算平台中虚 拟机列表。
[0047] 在本实施例中,先通过libvirt模块,获取云计算平台中虚拟机的数量,针对这个 虚拟机的数量可以有针对性的获取整个云计算平台中虚拟机列表,以使获得的虚拟机列表 准确。
[0048] 在其中一个实施例中,所述根据所述虚拟机运行状态,调用shell命令,获取所述 虚拟机的IP地址具体为:
[0049] 根据所述虚拟机运行状态,调用getipaddress脚本,获取所述虚拟机的IP地址。
[0050] getipaddress脚本是shell命令的一种实现方式。
[0051] 在其中一个实施例中,所述通过所述libvirt模块,获取云计算平台中虚拟机列 表之后还有步骤:
[0052] 检测是否成功获取所述计算平台中虚拟机列表,若成功获取,则执行所述根据所 述虚拟机列表,通过所述libvirt模块,获取云计算平台中虚拟机名称的步骤,若未能成功 获取,则退出操作。
[0053] 在发现无法成功获取所述计算平台中虚拟机列表时,系统将自动退出操作,避免 进入死循环。
[0054] 如图3所示,一种云计算平台中获取虚拟机IP地址系统,包括:
[0055] 连接建立模块100,用于与云计算平台中的libvirt模块建立连接;
[0056] 虚拟机列表获取模块200,用于通过所述libvirt模块,获取云计算平台中虚拟机 列表;
[0057] 虚拟机名称获取模块300,用于根据所述虚拟机列表,通过所述libvirt模块,获 取云计算平台中虚拟机名称;
[0058] 虚拟机运行状态获取模块400,用于根据所述云计算平台中虚拟机名称,通过所述 libvirt模块,获取云计算平台中虚拟机运行状态;
[0059] IP地址获取模块500,用于根据所述虚拟机运行状态,调用shell命令,获取所述 虚拟机的IP地址,其中,所述shell命令为内置于所述云计算平台的指令。
[0060] 本发明云计算平台中获取虚拟机IP地址系统,连接建立模块100与云计算平台中 的libvirt模块建立连接,虚拟机列表获取模块200通过云计算平台中libvirt模块,获取 云计算平台中虚拟机列表,虚拟机名称获取模块300通过libvirt模块,获取云计算平台中 虚拟机名称,虚拟机运行状态获取模块400获取所述云计算平台中虚拟机运行状态,IP地 址获取模块500根据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址。整 个过程中,借助libvirt模块依次获取虚拟机列表、名称以及运行状态,再通过云计算平台 内置的shell命令,获取虚拟机的IP地址,简单、严谨的处理过程能够高效、准确自动获取 虚拟机的IP地址,提高虚拟机在与其他设备进行数据交互时的效率,便于云计算平台后台 的管控。
[0061] 如图4所示,在其中一个实施例中,所述IP地址获取模块500具体包括:
[0062] 运行状态参数获取单元520,用于以所述云计算平台中虚拟机名称为参数,调用 shell命令,从所述虚拟机运行状态中分别读取每台所述虚拟机的运行状态参数;
[0063] 物理地址获取单元540,用于根据每台所述虚拟机的运行状态参数,调用shell命 令,查找当前运行的虚拟机网卡的物理地址;
[0064] IP地址获取单元560,用于根据所述当前运行的虚拟机网卡的物理地址,调用 shell命令,获取所述当前运行的虚拟机的IP地址。
[0065] 如图4所不,在其中一个实施例中,所述虚拟机列表获取模块200具体包括:
[0066] 数量获取单元220,用于通过所述libvirt模块,获取所述云计算平台中虚拟机的 数量;
[0067] 列表获取单元240,用于根据所述虚拟机的数量,通过所述libvirt模块,获取所 述云计算平台中虚拟机列表。
[0068] 在其中一个实施例中,所述IP地址获取模块用于,根据所述虚拟机运行状态,调 用getipaddress脚本,获取所述虚拟机的IP地址。
[0069] 在其中一个实施例中,所述云计算平台中获取虚拟机IP地址系统,还包括:
[0070] 检测模块,用于检测是否成功获取所述计算平台中虚拟机列表,若成功获取,则执 行所述根据所述虚拟机列表,通过所述libvirt模块,获取云计算平台中虚拟机名称的步 骤,若未能成功获取,则退出操作。
[0071] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并 不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保 护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1. 一种云计算平台中获取虚拟机IP地址方法,其特征在于,包括步骤: 与云计算平台中的libvirt模块建立连接; 通过所述libvirt模块,获取云计算平台中虚拟机列表; 根据所述虚拟机列表,通过所述libvirt模块,获取云计算平台中虚拟机名称; 根据所述云计算平台中虚拟机名称,通过所述libvirt模块,获取云计算平台中虚拟 机运行状态; 根据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址,其中,所述 shell命令为内置于所述云计算平台的指令。
2. 根据权利要求1所述的云计算平台中获取虚拟机IP地址方法,其特征在于,所述根 据所述虚拟机运行状态,利用shell指令,获取所述虚拟机的IP地址具体包括步骤: 以所述云计算平台中虚拟机名称为参数,调用shell命令,从所述虚拟机运行状态中 分别读取每台所述虚拟机的运行状态参数; 根据每台所述虚拟机的运行状态参数,调用shell命令,查找当前运行的虚拟机网卡 的物理地址; 根据所述当前运行的虚拟机网卡的物理地址,调用shell命令,获取所述当前运行的 虚拟机的IP地址。
3. 根据权利要求1或2所述的云计算平台中获取虚拟机IP地址方法,其特征在于,所 述通过所述libvirt模块,获取云计算平台中虚拟机列表具体包括步骤: 通过所述libvirt模块,获取所述云计算平台中虚拟机的数量; 根据所述虚拟机的数量,通过所述libvirt模块,获取所述云计算平台中虚拟机列表。
4. 根据权利要求1所述的云计算平台中获取虚拟机IP地址方法,其特征在于,所述根 据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的IP地址具体为: 根据所述虚拟机运行状态,调用getipaddress脚本,获取所述虚拟机的IP地址。
5. 根据权利要求1或2或4所述的云计算平台中获取虚拟机IP地址方法,其特征在 于,所述通过所述libvirt模块,获取云计算平台中虚拟机列表之后还有步骤: 检测是否成功获取所述计算平台中虚拟机列表,若成功获取,则执行所述根据所述虚 拟机列表,通过所述libvirt模块,获取云计算平台中虚拟机名称的步骤,若未能成功获 取,则退出操作。
6. -种云计算平台中获取虚拟机IP地址系统,其特征在于,包括: 连接建立模块,用于与云计算平台中的libvirt模块建立连接; 虚拟机列表获取模块,用于通过所述libvirt模块,获取云计算平台中虚拟机列表; 虚拟机名称获取模块,用于根据所述虚拟机列表,通过所述libvirt模块,获取云计算 平台中虚拟机名称; 虚拟机运行状态获取模块,用于根据所述云计算平台中虚拟机名称,通过所述libvirt 模块,获取云计算平台中虚拟机运行状态; IP地址获取模块,用于根据所述虚拟机运行状态,调用shell命令,获取所述虚拟机的 IP地址,其中,所述shell命令为内置于所述云计算平台的指令。
7. 根据权利要求6所述的云计算平台中获取虚拟机IP地址系统,其特征在于,所述IP 地址获取模块具体包括: 运行状态参数获取单元,用于以所述云计算平台中虚拟机名称为参数,调用shell命 令,从所述虚拟机运行状态中分别读取每台所述虚拟机的运行状态参数; 物理地址获取单元,用于根据每台所述虚拟机的运行状态参数,调用shell命令,查找 当前运行的虚拟机网卡的物理地址; IP地址获取单元,用于根据所述当前运行的虚拟机网卡的物理地址,调用shell命令, 获取所述当前运行的虚拟机的IP地址。
8. 根据权利要求6或7所述的云计算平台中获取虚拟机IP地址系统,其特征在于,所 述虚拟机列表获取模块具体包括: 数量获取单元,用于通过所述libvirt模块,获取所述云计算平台中虚拟机的数量; 列表获取单元,用于根据所述虚拟机的数量,通过所述libvirt模块,获取所述云计算 平台中虚拟机列表。
9. 根据权利要求6所述的云计算平台中获取虚拟机IP地址系统,其特征在于,所述IP 地址获取模块用于,根据所述虚拟机运行状态,调用getipaddress脚本,获取所述虚拟机 的IP地址。
10. 根据权利要求6或7或9所述的云计算平台中获取虚拟机IP地址系统,其特征在 于,还包括: 检测模块,用于检测是否成功获取所述计算平台中虚拟机列表,若成功获取,则执行所 述根据所述虚拟机列表,通过所述libvirt模块,获取云计算平台中虚拟机名称的步骤,若 未能成功获取,则退出操作。
【文档编号】H04L29/12GK104111862SQ201410341488
【公开日】2014年10月22日 申请日期:2014年7月17日 优先权日:2014年7月17日
【发明者】陈鹏举 申请人:湖南昇云科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1