comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Funcion exec y popen no ejecutan scripts

  • 19 Respuestas
  • 5346 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado $francisco

  • *
  • Underc0der
  • Mensajes: 191
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: hackloper
« en: Septiembre 01, 2014, 02:05:05 pm »
Que tal a todos, como bien digo, no puedo ejecutar ningún script de python a través de php, normalmente las dudas son si le he dado permisos a los archivos, esto ya esta hecho, o si utilizo sudo, esto también, el shebang de python también esta puesto "#! /usr/bin/env python", y el scripts funciona correctamente porque lo ejecuto a trabes de la consola y funciona.

php:

Código: You are not allowed to view links. Register or Login
<?php
function escribir(){
error_reporting(E_ALL);
/* Añade redirección, por lo que podemos obtener stderr. */
$gestor popen('sudo python /var/www/enc/archivo.py''r');
echo "'$gestor'; " gettype($gestor) . "\n";
$leer fread($gestor2096);
echo $leer;
pclose($gestor);
}

escribir();
?>

python:

Código: You are not allowed to view links. Register or Login
#! /usr/bin/env python

f = open("probando.txt","w")
f.write("hola")
f.close()

Cuando ejecuto el código php me muestra lo siguiente:

Código: You are not allowed to view links. Register or Login
'Resource id #2'; resource
lo he probado casi todo, con exec, shell_exec, pero no me ejecuta de ninguna manera el script.
« Última modificación: Septiembre 01, 2014, 02:35:38 pm por Expermicid »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5339
  • Actividad:
    28.33%
  • Reputación 30
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Septiembre 01, 2014, 02:27:22 pm »
Los archivos tienen permisos?


Desconectado $francisco

  • *
  • Underc0der
  • Mensajes: 191
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: hackloper
« Respuesta #2 en: Septiembre 01, 2014, 02:40:46 pm »
Si todos "chmod 777 /var/www/*", "chmod 777 /var/www/enc/*", pero nada, sigue sin dejarme.

Desconectado $francisco

  • *
  • Underc0der
  • Mensajes: 191
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: hackloper
« Respuesta #3 en: Septiembre 01, 2014, 03:54:31 pm »
Por si sirve de algo me di cuenta que al probar me funciona pero quitando le sudo, pero el problema persiste.

Código: You are not allowed to view links. Register or Login
$gestor = popen(' python /var/www/enc/archivo.py', 'r');
le corresponde el archivo:

Código: You are not allowed to view links. Register or Login
#! /usr/bin/env python

f = open("probando.txt","w")
f.write("hola")
f.close()

aquí todo funciona bien, pero realmente el script que quiero que funcione no funciona.

Código: You are not allowed to view links. Register or Login
$gestor = popen(' sudo python /var/www/enc/power.py', 'r');
Código: You are not allowed to view links. Register or Login
#! /usr/bin/env python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(18,GPIO.OUT)

GPIO.output(18,GPIO.LOW)
time.sleep(3)
GPIO.output(18,GPIO.HIGH)

GPIO.cleanup()

los dos funciona por consola, pero el segundo archivo necesita sudo para funcionar, y parece ser que no puedo hacerlo desde php, ¿alguna manera de solucionarlo?

Desconectado hielasangre

  • *
  • Underc0der
  • Mensajes: 121
  • Actividad:
    5%
  • Reputación 0
    • Ver Perfil
« Respuesta #4 en: Septiembre 01, 2014, 05:15:26 pm »
You are not allowed to view links. Register or Login
Por si sirve de algo me di cuenta que al probar me funciona pero quitando le sudo, pero el problema persiste.

Código: You are not allowed to view links. Register or Login
$gestor = popen(' python /var/www/enc/archivo.py', 'r');
le corresponde el archivo:

Código: You are not allowed to view links. Register or Login
#! /usr/bin/env python

f = open("probando.txt","w")
f.write("hola")
f.close()

aquí todo funciona bien, pero realmente el script que quiero que funcione no funciona.

Código: You are not allowed to view links. Register or Login
$gestor = popen(' sudo python /var/www/enc/power.py', 'r');
Código: You are not allowed to view links. Register or Login
#! /usr/bin/env python

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(18,GPIO.OUT)

GPIO.output(18,GPIO.LOW)
time.sleep(3)
GPIO.output(18,GPIO.HIGH)

GPIO.cleanup()

los dos funciona por consola, pero el segundo archivo necesita sudo para funcionar, y parece ser que no puedo hacerlo desde php, ¿alguna manera de solucionarlo?

no es aconsejable darle permisos de  root al usuario de apache, fijate si hacer un binario o algo... contame que intentas hacer a vewr si te puedo ayudar

Desconectado $francisco

  • *
  • Underc0der
  • Mensajes: 191
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: hackloper
« Respuesta #5 en: Septiembre 02, 2014, 09:59:38 am »
 Lo que estoy intentando es hacer encender una bombilla con un relé térmico desde una raspberry pi con raspbian instalado, instale apache2 y php5, pero para mi sorpresa no podía ejecutar ningún comando con la función exec de php que requiriera permisos de el grupo sudo, bueno... esto no lo tengo muy claro, no se si es que se necesita permisos de administrador, o que estén en el grupo sudo... esto no lo entendí bien pero lo logré solucionar.

El caso que después de tanto leer  y leer y trasnochar, mi cabeza ya casi me estallaba, y casi estaba apunto de dejarlo porque ya no sabia que hacer, y vi en una página que decía que había que añadir un usuario en el grupo sudo entonces hice lo siguiente.

1- Escribí en la función exec:
 
Código: You are not allowed to view links. Register or Login
exec("whoami",$out);
echo ·$out;

Entonces me muestra el usuario que esta utilizando para ejecutar los comando y me muestra:
Código: You are not allowed to view links. Register or Login
www-data
Entonces voy a añadirlo a la lista de sudoers:
Código: You are not allowed to view links. Register or Login
sudo visudo -f /etc/sudoers
Me voy a la linea:
Código: You are not allowed to view links. Register or Login
includedir /etc/sudoers.d
Y  justo debajo escribo:
Código: You are not allowed to view links. Register or Login
www-data ALL=(ALL) NOPASSWD: ALL
Pulso control+O y pulso enter y ya esta, php puede utilizar la función exec, popen o cualquier otra y utilizar sudo sin ningún problema.

Gracias de todos modos a todos.

Desconectado kid_goth

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Reputación 3
  • Tu conocimiento se limita cuando dices NO PUEDO...
    • Ver Perfil
    • DC Projects
    • Email
« Respuesta #6 en: Septiembre 02, 2014, 11:35:25 am »
Nice, y aunque se que estas en pruebas NUNCA lo hagas en un servidor de producción :o
You are not allowed to view links. Register or Login

Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Desconectado $francisco

  • *
  • Underc0der
  • Mensajes: 191
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
  • Skype: hackloper
« Respuesta #7 en: Septiembre 02, 2014, 02:41:56 pm »
Si, ahora estoy en prueba, pero ¿podría configurar lo para no todo el mundo pudiera acceder a esta página? algo interesante seria poder crear una red con la raspberry en la salida de tu tarjeta de red, ¿podría conectar la raspberry a un switch y que la raspberry sea el servidor dhcp y crear una red para conectar otros aparatos?

Desconectado mapa_fm

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #8 en: Julio 27, 2015, 01:21:58 pm »
Hola buenas, estaría interesado en saber como hacer para ejecutar un script de python a través de una pagina PHP sin dar permisos de sudoer al usuario www-data, parecido a lo que preguntaba el compañero. En mi caso quiero activar un buzzer remotamente para un sistema de videovigilancia con Raspberry Pi. Y siendo videovigilancia no sería muy seguro ese remedio. Gracias un saludo.
« Última modificación: Julio 27, 2015, 01:26:35 pm por mapa_fm »

Desconectado kid_goth

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Reputación 3
  • Tu conocimiento se limita cuando dices NO PUEDO...
    • Ver Perfil
    • DC Projects
    • Email
« Respuesta #9 en: Julio 27, 2015, 01:47:30 pm »
@You are not allowed to view links. Register or Login te montas un CGI hacia el python es lo mejor y llamas directamente al api que ejecutar desde php mmmm me suena a que querrás algo como el exec y mejor que tengas esas funciones deshabilitadas.... Saludos
You are not allowed to view links. Register or Login

Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Desconectado Jimeno

  • *
  • Underc0der
  • Mensajes: 367
  • Actividad:
    0%
  • Reputación -1
  • NULL
    • Ver Perfil
    • Twitter
  • Skype: migueljimeno96
  • Twitter: &quot;&gt;&lt;&lt;img src=y onerror=prompt();&gt;
« Respuesta #10 en: Julio 27, 2015, 02:13:24 pm »
Prueba así, te dejo una PoC:

Archivo PHP:
Código: PHP
  1. <?php
  2.         echo "Probando...<br>";
  3.         $output = You are not allowed to view links. Register or Login("/usr/bin/python /var/www/html/test.py");
  4.         echo($output);
  5.  
  6. ?>
  7.  

Archivo Python:
Código: Python
  1. #!/usr/bin/env python
  2. f = open("probando.txt","r+")
  3. print f.read()
  4. f.close()
  5.  

Archivo que se lee:
Citar
Todas putas

Ejecución:

Link: You are not allowed to view links. Register or Login
Contacto: @migueljimeno96 -

Desconectado mapa_fm

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #11 en: Julio 27, 2015, 04:24:27 pm »
Hola, ante todo muchas gracias por responder y muchísimas gracias por tanta brevedad. Estoy intentando procesar tu respuesta, es que soy muy muy noob en estos temas, mira te enseño mi pagina php y mi script de python, es que si no me hago un lío intentando hacer como has hecho tu, a ver si con mis códigos quedaría igual.

página php:
You are not allowed to view links. Register or Login

script python:
You are not allowed to view links. Register or Login

Desconectado Jimeno

  • *
  • Underc0der
  • Mensajes: 367
  • Actividad:
    0%
  • Reputación -1
  • NULL
    • Ver Perfil
    • Twitter
  • Skype: migueljimeno96
  • Twitter: &quot;&gt;&lt;&lt;img src=y onerror=prompt();&gt;
« Respuesta #12 en: Julio 27, 2015, 04:31:17 pm »
Un problema es que estás llamando a Python con sudo, lo que te pedirá la contraseña, hazlo sin él si es posible o da permisos al usuario para que lo corra sin necesidad de sudo.
Otro problema es que estás llamando a Python directamente, eso podría traerte problemas, hazlo como lo hice yo, es lo que recomiendan en stackoverflow.
Por último creo ver $a- exec, ¿no será $a = exec(loquesea);?

PD: a no ser que encender4 sea una variable que has declarado necesitarás usar $_POST['encender4'] (nota las comillas) para que lo reconozca.
PD2: asegúrate de que ambos archivos tengan permisos suficientes en el directorio en el que están.
« Última modificación: Julio 27, 2015, 04:35:24 pm por Jimeno »
Contacto: @migueljimeno96 -

Desconectado mapa_fm

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #13 en: Julio 27, 2015, 06:16:12 pm »
He estado haciendo una a una las variaciones que me has comentado pero no funciona:

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

y si le quito el guión de a- exec no sale ni la página php, tiene permisos 755 tanto la página php como el script

y la variable encender no sé no esta declarada, en un tutorial salía así directamente.

Desconectado Jimeno

  • *
  • Underc0der
  • Mensajes: 367
  • Actividad:
    0%
  • Reputación -1
  • NULL
    • Ver Perfil
    • Twitter
  • Skype: migueljimeno96
  • Twitter: &quot;&gt;&lt;&lt;img src=y onerror=prompt();&gt;
« Respuesta #14 en: Julio 27, 2015, 06:29:59 pm »
You are not allowed to view links. Register or Login
He estado haciendo una a una las variaciones que me has comentado pero no funciona:

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

y si le quito el guión de a- exec no sale ni la página php, tiene permisos 755 tanto la página php como el script

y la variable encender no sé no esta declarada, en un tutorial salía así directamente.
Y el signo de igual?
Contacto: @migueljimeno96 -

Desconectado mapa_fm

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #15 en: Julio 27, 2015, 06:33:32 pm »
Nada, tampoco funciona.

Desconectado Jimeno

  • *
  • Underc0der
  • Mensajes: 367
  • Actividad:
    0%
  • Reputación -1
  • NULL
    • Ver Perfil
    • Twitter
  • Skype: migueljimeno96
  • Twitter: &quot;&gt;&lt;&lt;img src=y onerror=prompt();&gt;
« Respuesta #16 en: Julio 27, 2015, 06:35:42 pm »
You are not allowed to view links. Register or Login
Nada, tampoco funciona.

Tienes que ir arreglando cada fallo, jajaja.
Lanza php5 archivo.php y pon la salida aquí.
Sustituye archivo.php por el nombre de tu archivo.
Contacto: @migueljimeno96 -

Desconectado mapa_fm

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #17 en: Julio 27, 2015, 06:41:31 pm »
PHP Notice: Undefined index: encender4 in /var/www/php/alarma.php on line 20

Desconectado Jimeno

  • *
  • Underc0der
  • Mensajes: 367
  • Actividad:
    0%
  • Reputación -1
  • NULL
    • Ver Perfil
    • Twitter
  • Skype: migueljimeno96
  • Twitter: &quot;&gt;&lt;&lt;img src=y onerror=prompt();&gt;
« Respuesta #18 en: Julio 27, 2015, 07:23:23 pm »
Pon el código PHP al principio del archivo y programa bien ese PHP, anda.
Además no declares cosas en condicionales, es decir, mejor haz:
Código: PHP
  1. <?php
  2.     // Mejor
  3.     $aux = $_POST['encendido4'];
  4.     if ($aux) {...}
  5.  
  6.     // Peor
  7.     if ($_POST['encendido4']) {...}
  8.  
  9. ?>

Y por favor, revisa errores de sintaxis y esas cosas antes de comentar.
Además dale permisos correctos al archivo .py y al .php

Te dejo otra prueba con tu código:


You are not allowed to view links. Register or Login
PHP Notice: Undefined index: encender4 in /var/www/php/alarma.php on line 20
Contacto: @migueljimeno96 -

Desconectado mapa_fm

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #19 en: Julio 27, 2015, 08:23:45 pm »
Disculpa cualquier error cometido, es que estoy empezando en esto lo siento. Ahora al ejecutar el comando    php5 alarma.php   en consola, no da ningún error y suena el buzzer. Pero estoy teniendo muchos problemas al intentar agregar la funcionalidad del botón, yo creo que tengo el código tal como me decías, pero me sigue saliendo el mismo error:

You are not allowed to view links. Register or Login

Disculpa tanta molestia, en lograr esto ya no te molesto mas. Muchísimas gracias por tu ayuda.
« Última modificación: Julio 27, 2015, 08:29:32 pm por mapa_fm »

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Error no llama a funcion jquery was not called parse error

Iniciado por $francisco

Respuestas: 2
Vistas: 1440
Último mensaje Marzo 07, 2016, 11:16:44 am
por $francisco
[SOLUCIONADO] Como reproducir una lista de archivos desde una función de user?

Iniciado por fleshworm

Respuestas: 1
Vistas: 1179
Último mensaje Febrero 06, 2015, 11:33:16 pm
por blozzter
[JavaScript] Función contador ¿Para qué sirve este script?

Iniciado por 808mafia

Respuestas: 2
Vistas: 925
Último mensaje Noviembre 23, 2015, 07:51:13 am
por Jscript32
[Duda] Optimizar funcion .open() para ahorrar memoria

Iniciado por po6xsecpo

Respuestas: 1
Vistas: 619
Último mensaje Octubre 03, 2014, 07:31:22 pm
por fermino
Formatear variable Bash para parametro funcion C

Iniciado por Sont

Respuestas: 1
Vistas: 936
Último mensaje Febrero 22, 2017, 10:15:39 pm
por seth