在 guest vm Libvirt 中执行命令

在 guest vm Libvirt 中执行命令

是否可以使用 libvirt 或 virsh 在来宾虚拟机内执行例如:iostat 的命令。我想找出来宾虚拟机的 IOPS,但使用 libvirt java api 我无法获取虚拟机的 IOPS,因此需要另一种方法将是在来宾虚拟机内执行类似 iostat 的命令并记下读数。

答案1

  1. 如果您为虚拟机设置了虚拟串行控制台,则可以使用该virsh console命令连接到它。

    您必须使用expect脚本使用用户名和密码登录,运行命令,提取输出,然后注销。

    但请注意,这expect是一种单一用途的语言,在我看来,如果您还不了解它,那么学习/使用它就没有意义。您最好将学习它所需的时间投入到学习通用语言(如perl或 )中python

    这还有一个额外的好处,那就是你想做的将是很多perl使用Expect.pmpythonpexpect模块比使用其本身更容易expectexpect从会话中提取数据的能力与 或perlpython能做的相比非常有限且原始。

    顺便说一句,您提到了libvirtJava API - 快速谷歌搜索显示至少有两种不同的expect类似 Java 库的实现。可能还有更多。

    https://github.com/ronniedong/Expect-for-Java

    https://github.com/Alexey1Gavrilov/ExpectIt

    我不是 Java 程序员,从未使用过其中任何一个,不知道它们是否有任何好处,并且无法推荐其中一个。

  2. 或者,如果虚拟机具有带 IP 地址的网络接口并且已sshd安装(或者您可以安装),则您可以ssh像访问任何其他主机一样进入该虚拟机。到目前为止,这是实现您想做的事情的最简单、最好的方法。

相关内容