Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (bash) [Seleccionar]
echo "Hola";
PHP:
Código (php) [Seleccionar]
print exec("sh PoC.sh")."\n";

SALIDA:
Código (bash) [Seleccionar]
alex@shellroot:~/Escritorio$ php PoC.php
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 (bash,1) [Seleccionar]

#!/bin/bash
echo "hola mundo"
echo "hola" > rofl


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 (php) [Seleccionar]
<?php

system
('./programa.sh');

?>


Código (bash) [Seleccionar]

[yoya@Fedora pruebas]$ ls
index.php  programa.sh
[yoya@Fedora pruebas]$ chmod +x programa.sh
[yoya@Fedora pruebas]$ php index.php
hola mundo
[yoya@Fedora pruebas]$ ls
index.php  programa.sh  rofl
[yoya@Fedora pruebas]$


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 (php-brief) [Seleccionar]
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 (php-brief) [Seleccionar]
print exec("echo hola
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
Cita de: 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...

En que servidor lo tienes?

Saludos