elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  ¿Como ejecutar shell script (bash) desde PHP?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como ejecutar shell script (bash) desde PHP?  (Leído 31,225 veces)
‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
¿Como ejecutar shell script (bash) desde PHP?
« en: 9 Enero 2012, 16:19 pm »

He probado de todo, con los comandos de system, shell_exec, y exec.

Me funcionan perfectamente si lo que tengo ejecutándose es una linea, del estido de 'echo hola > asd' y demás. El problema es que yo quiero ejecutar un archivo .sh entero, y no sé como.

He buscado y no he dado con la solución que me funcione. Alguien sabe cómo?
Si poneis algo, por favor probadlo, porque como digo, he encontrado varias soluciones y ninguna me ha funcionado, osea que copiar soluciones de otro sitio no me vale, solo si lo habeis probado antes xD.

El sh que estoy intentando ejecutar y no me va es muy simple:

programa.sh
echo "hola mundo"
echo "hola" > rofl

A ver si hay suerte, un saludo y muchas gracias!


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #1 en: 9 Enero 2012, 21:49 pm »

BASH:
Código
  1. echo "Hola";
PHP:
Código
  1. print exec("sh PoC.sh")."\n";

SALIDA:
Código
  1. alex@shellroot:~/Escritorio$ php PoC.php
  2. Hola


En línea

Te vendería mi talento por poder dormir tranquilo.
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #2 en: 9 Enero 2012, 23:35 pm »

Deberías utilizar la función system(), ya que esta también muestra la salida, en cambio al utilizar exec(), solo se ejecuta el programa.

programa.sh
Código
  1. #!/bin/bash
  2. echo "hola mundo"
  3. echo "hola" > rofl
  4.  

Nota: En la primera linea, indico donde se encuentra el interprete de bash. A al ejecutar el script en bash, no es necesario indicarle que es un script en bash, con un simple ./bash basta.

index.php
Código
  1. <?php
  2.  
  3. system('./programa.sh');
  4.  
  5. ?>

Código
  1. [yoya@Fedora pruebas]$ ls
  2. index.php  programa.sh
  3. [yoya@Fedora pruebas]$ chmod +x programa.sh
  4. [yoya@Fedora pruebas]$ php index.php
  5. hola mundo
  6. [yoya@Fedora pruebas]$ ls
  7. index.php  programa.sh  rofl
  8. [yoya@Fedora pruebas]$
  9.  

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #3 en: 10 Enero 2012, 10:39 am »

Vale, se me olvidó decir un detalle sorry... Necesito que se ejecute desde el navegador, no desde la consola =)
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #4 en: 10 Enero 2012, 11:04 am »

Es igual, o en que te falla?
En línea

Te vendería mi talento por poder dormir tranquilo.
‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #5 en: 10 Enero 2012, 15:36 pm »

He probado ambas cosas, y nada, osea, no sé en que me falla, no me sale ningún error, ninguna salida.

Si pongo esto:

Código
  1. print exec("echo hola")."\n";

Si que me funciona, me saca por pantalla "hola". Pero el programa sh no me funciona. Incluso he probado a hacer un exec con varias lineas, y tampoco va:

Código
  1. print exec("echo hola
  2. echo adios")."\n";

Salida: "hola"


Un saludo
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #6 en: 10 Enero 2012, 15:44 pm »

Ps a mi me funciona tanto en el navegador como en la consola, supongo que el error puede ser por alguna propiedad del php.ini o no tengas permisos suficientes para crear archivos en el dir que estas utilizando.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
‭lipman


Desconectado Desconectado

Mensajes: 3.062



Ver Perfil WWW
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #7 en: 10 Enero 2012, 16:45 pm »

Lo de los permisos no creo que sea:
-Puedo ejecutar el programa.sh directamente desde la consola (cygwin) y me crea el archivo correctamente
-Tengo puesta la carpeta htdocs donde está el index del server como 777
-Tengo puesto a 777 programa.sh y el index.php

Con respecto lo del php.ini, que yo sepa el problema suele ser el "safe_mode" y lo tengo en off.


Osea yoya, lo que me estás diciendo es que exáctamente lo que tú has puesto, te funciona ejecutándolo desde el navegador? Me voy a tener que preocupar entonces...
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #8 en: 10 Enero 2012, 23:22 pm »

sip a mi me funciona...
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
mokoMonster


Desconectado Desconectado

Mensajes: 301


<? ...


Ver Perfil
Re: ¿Como ejecutar shell script (bash) desde PHP?
« Respuesta #9 en: 24 Enero 2012, 15:51 pm »

Lo de los permisos no creo que sea:
-Puedo ejecutar el programa.sh directamente desde la consola (cygwin) y me crea el archivo correctamente
-Tengo puesta la carpeta htdocs donde está el index del server como 777
-Tengo puesto a 777 programa.sh y el index.php

Con respecto lo del php.ini, que yo sepa el problema suele ser el "safe_mode" y lo tengo en off.


Osea yoya, lo que me estás diciendo es que exáctamente lo que tú has puesto, te funciona ejecutándolo desde el navegador? Me voy a tener que preocupar entonces...

En que servidor lo tienes?

Saludos
En línea

"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines