Можно ли получить информацию из менеджера виртуальных машин, используя код php? я пробовал через exec команды, но не смог получить ничего в браузере в результате. Пожалуйста, помогите, чтобы выполнить эту задачу.
Я использую Ubuntu Server 11.04 и KVM в качестве гипер-забрала. Я установил диспетчер виртуальных машин.
Пожалуйста, не предлагайте никаких инструментов для установки.
Из http://php.net/manual/en/function.exec.php:
Необходимо будет использовать массив, который будет произведен.
Так, используйте следующий код:
$result=[]; // Create an array
exec('your command line', &$result); // Remember the & before the result as it ***IS A REFERENCE***
//DO whatever with your result
Проблема состоит в том, что Вы не передали свой массив результата как ссылку.
Или, использовать shell_exec
, то, где Ваше возвращаемое значение - все, возвратилось:
$return=shell_exec($command_line);
Можно также использовать обратные галочки:
$result=`cmdline`
popen(
:Создайте новый указатель с:
$handle = popen("/bin/ls", "r");
и затем считайте его:
$read = fread($handle);
и согласитесь:
pclose($handle);
Это заблокирует выполнение, пока вывод не остановится.
Функции PHP, такие как exec()
или shell_exec()
, не помогут, потому что libvirt выполняется в режиме root, а PHP - как пользователь www-data
. Мы можем дать www-data
привилегии root, но в этом случае могут возникнуть некоторые проблемы с безопасностью. Поэтому лучший способ - использовать API libvirt-php. Например, чтобы перечислить все виртуальные машины в php:
<?php
$conn = libvirt_connect('null', false);
$doms = libvirt_list_domains($conn);
print_r($doms);
?>
Ссылки:
Это будет выполняться гладко, если libvirt прослушивает порт TCP. Чтобы прослушивание libvirt через порт tcp, поможет этот вопрос: Я не могу использовать libvirt с прослушиванием TCP