Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: ‭lipman en 9 Enero 2012, 16:19 pm



Título: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: ‭lipman 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!


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: Shell Root 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


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: ~ Yoya ~ en 9 Enero 2012, 23:35 pm
Deberías utilizar la función system() (http://), ya que esta también muestra la salida, en cambio al utilizar exec() (http://www.php.net/manual/es/function.exec.php), 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.


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: ‭lipman 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 =)


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: Shell Root en 10 Enero 2012, 11:04 am
Es igual, o en que te falla?


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: ‭lipman 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


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: ~ Yoya ~ 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.


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: ‭lipman 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...


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: ~ Yoya ~ en 10 Enero 2012, 23:22 pm
sip a mi me funciona...


Título: Re: ¿Como ejecutar shell script (bash) desde PHP?
Publicado por: mokoMonster 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