Execute o comando dentro do guest vm Libvirt

4

É possível executar um comando para, por exemplo: iostat dentro de uma VM guest usando libvirt ou virsh .Eu quero descobrir IOPS para um guest vm, mas com libvirt java api eu não consigo obter o IOPS de um vm, daí outro método seria executar um comando como iostat dentro de um guest vm e derrubar as leituras.

    
por arpit joshi 26.04.2016 / 11:56

1 resposta

2

  1. Se você tiver configurado um console serial virtual para sua VM, poderá usar o comando virsh console para se conectar a ele.

    Você terá que usar um script expect para fazer o login com nome de usuário e senha, executar seu (s) comando (s), extrair a saída e, em seguida, efetuar logout.

    Note, no entanto, que expect é uma linguagem de propósito único e, IMO, não há sentido em aprender / usá-la se você ainda não a conhece. Você está muito melhor colocando o tempo necessário para aprendê-lo a aprender uma linguagem de propósito geral como perl ou python .

    Isso tem o benefício adicional de que o que você deseja fazer será um LOT mais fácil com o perl ' Expect.pm ou python ' pexpect module do que com expect em si. A capacidade de expect de extrair dados da sessão é bastante limitada e primitiva em comparação com o que perl ou python pode fazer.

    BTW, você mencionou a API Java de libvirt - uma pesquisa rápida no google revela que há pelo menos duas implementações diferentes de uma biblioteca expect -like para Java. Pode haver mais.

    link

    link

    Eu não sou um programador Java, nunca usei nenhum desses, não tenho idéia se eles são bons, e não posso recomendar um sobre o outro.

  2. Como alternativa, se a VM tiver uma interface de rede com um endereço IP e tiver sshd instalado (ou você puder instalá-la), você poderá ssh na VM, como faria com qualquer outro host. Esta é, de longe, a maneira mais fácil e melhor de fazer o que você quer.

por 26.04.2016 / 13:54