PHP - Ejecutar Virtualbox desde PHP

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por Soulaire (6 intervenciones) el 20/05/2020 22:21:54
Hola, estoy haciendo un proyecto con VirtualBox y PHP, quiero iniciar las maquinas con una serie de codigos PHP como este:

1
2
3
<?php
echo shell_exec('VBoxManage startvm "Ubuntu_server_20" --type headless');
?>

Pero nada, he probado de miles de maneras, pero ninguna me enciende la maquina virtual, y ya no se porque es, si alguien sabe del tema y me puede ayudar, mil gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por joel (1269 intervenciones) el 21/05/2020 08:01:08
Ese código PHP desde donde lo ejecutas? de la linea de comandos o desde una pagina web?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por Soulaire (6 intervenciones) el 21/05/2020 15:53:06
Desde una pagina web, la idea es controlarlas mediante una web y que se inicien en el servidor, entonces conectarse via rpd con guacamole o algo por el estilo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por joel (1269 intervenciones) el 21/05/2020 17:43:40
Entiendo, comprueba que el usuario que utiliza el servidor web tenga derechos para ejecutar VBoxManage...

Te recomendaría utilizar exec() ya que no espera respuesta del proceso...

Tambien intenta poner el path completo al binario, no vaya a ser que no este el path correctamente en el usuario del Apache.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por Soulaire (6 intervenciones) el 24/05/2020 23:58:37
Hola! He tardado un poco en responder lo se, he estado haciendo pruebas y ha llegado un momento en el que me ha llegado a ir todo perfecto, sin embargo, ahora cuando inicio el php, se queda cargando la pagina y no hace nada, tengo que reiniciar apache2 y virtualbox me genera este log:

Log created: 2020-05-20T22:46:38.443071000Z
Executable: /usr/lib/virtualbox/VBoxSVC
Arg[0]: /usr/lib/virtualbox/VBoxSVC
Arg[1]: --auto-shutdown
AddRef: illegal refcnt=3221225469 state=2

Pero en cambio si lo inicio normal, por comandos, basicamente copio y pego el comando, si que funciona y puedo hacer lo que quiera con la maquina, sabes algo al respecto? Y gracias por tu anterior consejo!

Edit: El log es de unos días atrás, pero igualmente siempre me dice lo mismo, a si que no importa mucho el día.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por joel (1269 intervenciones) el 25/05/2020 08:01:49
Exactamente como lo estas haciendo ahora?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por Soulaire (6 intervenciones) el 25/05/2020 12:26:23
He hecho varias pruebas e incluso en algunas me salia por pantalla como la maquina se había iniciado correctamente, aunque luego miraras la lista de maquinas y efectivamente no se había iniciado, no se muy bien porque, te dejo el código entero. (La parte de mysql funciona perfectamente)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
  session_start();
 
  require '/var/www/html/login/database.php';
 
  if (isset($_SESSION['user_id'])) {
    $records = $conn->prepare('SELECT id, email, password, premium FROM users WHERE id = :id');
    $records->bindParam(':id', $_SESSION['user_id']);
    $records->execute();
    $results = $records->fetch(PDO::FETCH_ASSOC);
 
    $user = null;
 
    if (count($results) > 0) {
      $user = $results;
    }
  }
  else
	  header('Location: /login/index.php');
 
  #echo shell_exec("vboxheadless -s Ubuntu_server_20_'".$user['email']."' -v on");
  #echo exec("vboxheadless -s Ubuntu_server_20_'".$user['email']."' -v on");
  #echo exec("vboxheadless -s Ubuntu_server_20 -v on");
  echo shell_exec("vboxmanage startvm Ubuntu_server_20 --type headless");
  #echo shell_exec("vboxheadless -s Ubuntu_server_20 -v on");
 
  #header('Location: /login/index.php');
?>

Como puedes ver intente con los 2, el que me dijiste tu y el que tenia ya, aunque sin muchos resultados, la maquina que no tiene la variable es una maquina que uso de prueba antes de meterle la parte de mysql. Hay veces que no da ningún error, simplemente se queda la pantalla en blanco, y ya, y otras en la que me devuelve el resultado pero no hace nada. También tengo otros, como el de importar una maquina, que ese si funciona y no tengo idea porque ese si y este no, te lo adjunto también por si quieres verlo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  session_start();
 
  require 'database.php';
 
  if (isset($_SESSION['user_id'])) {
    $records = $conn->prepare('SELECT id, email, password, premium FROM users WHERE id = :id');
    $records->bindParam(':id', $_SESSION['user_id']);
    $records->execute();
    $results = $records->fetch(PDO::FETCH_ASSOC);
 
    $user = null;
 
    if (count($results) > 0) {
      $user = $results;
    }
  }
  else
	  header('Location: index.php');
 
  echo shell_exec("vboxmanage import /ovas/Ubuntu_server_20.ova --vsys 0 --vmname Ubuntu_server_20_'".$user['email']."' --cpus 2 --memory 2048");
 
  header('Location: index.php')
?>

Tan sencillo como eso, se toma su tiempo cargando (cosa que es normal), pero lo acaba realizando. En este ultimo no cambie el shell_exec, ya que funcionaba bien, aunque si recomiendas cambiarlo, lo acabaré cambiando y viendo si funciona.

Edit: Te adjunto foto de lo que he dicho antes, sobre que si realiza el comando pero luego no enciende la maquina realmente


Screenshot_3

Lo de aborted fue por pruebas que hice anoche, fijándonos en el hora
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ejecutar Virtualbox desde PHP

Publicado por Alex (6 intervenciones) el 25/05/2020 12:48:50
Acabo de hacer esto en el servidor

1
2
3
4
5
6
7
<?php
echo shell_exec('vboxmanage showvminfo Ubuntu_server_20 | grep "State"');
echo "<br>";
 
#echo shell_exec('vboxmanage showvminfo Ubuntu_server_20');
 
?>

Y me ha devuelto esto:

State: running (since 2020-05-25T10:29:54.426000000)

Porque cuando lo ejecuto desde el servidor si me dice que esta running, pero cuando lo miro desde consola, con el mismo usuario (www-data) me dice que esta off?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar