Obtenha informações do gerenciador de máquinas virtuais usando o php

1

É possível recuperar informações do gerenciador de máquinas virtuais usando um código php? Eu tentei através de comandos exec, mas não consegui nada no navegador como resultado. Por favor, qualquer ajuda para concluir esta tarefa.

Estou usando o servidor Ubuntu 11.04 e o kvm como hyper-viseira. Eu instalei o gerenciador de máquinas virtuais.

Por favor, não sugira nenhuma ferramenta para instalar.

    
por Poorni Ma 07.11.2012 / 12:29

2 respostas

1

De link :

Você precisará usar uma matriz para obter resultados.

Então, use o seguinte código:

$result=[]; // Create an array
exec('your command line', &$result);  // Remember the & before the result as it ***IS A REFERENCE***
//DO whatever with your result

O problema é que você não passou sua matriz de resultados como referência.

Ou use shell_exec , onde seu valor de retorno é tudo retornado:

$return=shell_exec($command_line);

Você também pode usar backticks:

$result='cmdline'

Ou use popen( :

Crie um novo ponteiro com:

$handle = popen("/bin/ls", "r");

e depois leia:

$read = fread($handle);

e feche com:

pclose($handle);

Ele irá bloquear a execução até que a saída seja interrompida.

    
por hexafraction 07.11.2012 / 12:37
0

As funções do PHP como exec() ou shell_exec() não ajudarão porque o libvirt é executado no modo raiz, enquanto o PHP é executado como www-data user. Podemos dar privilégios de root a www-data , mas pode haver alguns problemas de segurança nesse caso. Então, a melhor maneira é usar a API libvirt-php. Por exemplo, para listar toda a VM no php:

<?php
     $conn = libvirt_connect('null', false);
     $doms = libvirt_list_domains($conn);
     print_r($doms);
?>

Referências:

Isso será executado sem problemas se o libvirt estiver escutando em uma porta TCP. Para fazer o libvirt escutando em uma porta tcp, esta pergunta ajudará: eu não posso use o libvirt com o TCP de escuta

    
por Ankit 17.05.2015 / 09:16