Foros del Web » Administración de Sistemas » Unix / Linux »

Enviar comando a sesion SCREEN desde PHP.

Estas en el tema de Enviar comando a sesion SCREEN desde PHP. en el foro de Unix / Linux en Foros del Web. Hola que tal amigos, hace unos dias estoy intentando interectuar con una ventana en linux (centos 6) a traves de php pero no he podido ...
  #1 (permalink)  
Antiguo 17/04/2013, 16:27
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Enviar comando a sesion SCREEN desde PHP.

Hola que tal amigos, hace unos dias estoy intentando interectuar con una ventana en linux (centos 6) a traves de php pero no he podido establecer una conexion a la misma.

Tengo mi script el cual recibe una variable y la misma se envia a la ventana.

comando.sh
Código:
#!/bin/bash
var=$@
screen -S daniel -p0 -X stuff "$var"`echo -ne '\015'`
Si yo ejecuto esto desde la consola funciona sin problemas (./comando.sh mi variable).

Ahora el problema esta cuando intento ejecutar esto a traves del navegar (apache)

comando.php
Código PHP:
if (isset($_GET["comando"]))
{
      
exec("sh comando.sh ".$_GET["comando"]."");

Tambien intente con system, shell_exec y no tengo resultados.
  #2 (permalink)  
Antiguo 18/04/2013, 08:14
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar comando a sesion SCREEN desde PHP.

Podría ser debido a varias cosas, entre ellas el hecho de que el usuario de apache probablemente no sea el mismo que ejecuta screen, y por lo tanto no tenga permisos para hacer lo que querés.

Otra opción es que no se esté cargando el PATH y por lo tanto no se encuentre "sh" (aunque supongo que verías un error si ese fuera el caso)

Deberías ver algún mensaje o algún archivo de log, así a ciegas es muy difícil saber qué es lo que sucede.
  #3 (permalink)  
Antiguo 18/04/2013, 08:32
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Enviar comando a sesion SCREEN desde PHP.

Si ejecuto el script desde php con system() me dice el siguiente mensaje "No screen session found.".

La session screen se llama daniel, para iniciarla uso un script iniciar.sh con lo siguiente "screen -dmS daniel ./configuracion.sh", esto lo ejecuto en la consola usando el usuario root, luego ingreso al screen con "screen -r daniel" y activo la opcion "multiuser on" y enseguida agrego el usuario "acladd apache".
  #4 (permalink)  
Antiguo 18/04/2013, 17:24
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar comando a sesion SCREEN desde PHP.

¿y qué comando estás usando para acceder a la sesión abierta? por lo que veo en los manuales, deberías usar

screen -x root/daniel
  #5 (permalink)  
Antiguo 18/04/2013, 19:37
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Enviar comando a sesion SCREEN desde PHP.

Para acceder a la sesión utilizo lo siguiente

Código BASH:
Ver original
  1. #!/bin/bash
  2. var=$@
  3. screen -S daniel -p0 -X stuff "$var"`echo -ne '\015'`

Esto recibe un parametro el cual se escribe en la screen daniel y se ejecuta la tecla enter.

------

Acabo de hacer una modificacion a mi scrip y me devuelve lo siguiente desde el navegador "Cannot opendir /var/run/screen/S-root: Permission denied"

Código BASH:
Ver original
  1. #!/bin/bash
  2. var=$@
  3. screen -S root/daniel -p0 -X stuff "$var"`echo -ne '\015'`

Última edición por Psicopata17; 18/04/2013 a las 19:51
  #6 (permalink)  
Antiguo 19/04/2013, 06:41
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar comando a sesion SCREEN desde PHP.

Parece que vamos avanzando, ¿no?
Como prueba, ¿podrías modificar los permisos de la carpeta e intentar de nuevo? Si funciona, habría que ver cómo modificar los permisos predefinidos. Aunque el problema aquí quizás sea porque la sesión pertenece a root.


Saludos
  #7 (permalink)  
Antiguo 19/04/2013, 07:39
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Enviar comando a sesion SCREEN desde PHP.

Le di permisos "chmod u+rwx /var/run/screen/S-root" y ahora me dice lo siguiente "Must run suid root for multiuser support."


---- Agrego

Pude solucionar ese problema con lo siguiente:

sudo chmod +s /usr/bin/screen
sudo chmod 755 /var/run/screen

Pero aun me sigue diciendo "Cannot opendir /var/run/screen/S-root: Permission denied"
  #8 (permalink)  
Antiguo 19/04/2013, 17:50
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar comando a sesion SCREEN desde PHP.

¿Comprobaste que sea root el propietario del programa? Seguramente lo sea, pero vale la pena comprobarlo.

¿Los permisos de la carpeta se están heredando en las carpetas hijas? es probable que cuando se crea la carpeta de la sesión en /var/run/screen, no tenga los permisos adecuados

Sinceramente no sé cuál sea la raíz del problema, pero lo que te comento es lo que yo revisaría, quizás ya lo hiciste y no sirvió de nada.


Saludos.
  #9 (permalink)  
Antiguo 19/04/2013, 19:10
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Enviar comando a sesion SCREEN desde PHP.

Asi es, root es el propietario de la ventana a la cual estoy intentando ingresar desde el navegador mediante php.

Me tiene dando vueltas esto, hace dias que ando con lo mismo... No logro darle con la tecla, creo que es un tema de permisos. Si le doy permiso a un usuario X para ingresar a la ventana mediante la consola puedo ingresar, el problema es cuando intento ingresar con el usuario apache...

Etiquetas: apache, centos, php, screen
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:42.