• Publicidad

Problema ejecutar script en Linux

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Notapor yazo » 2007-07-09 18:13 @801

Buenas:

He modificado un poco el script para comprobar el funcionamiento de Firmar:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
# salida.cgi
#
# Ejecución del binario Firmar con los parámetros indicados por el usuario
#
# Yazo, 2007.
#

use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);

# Leemos los parámetros del usuario y hacemos un comando
# he probado con la ruta "'/usr/cgi-bin/" , "/usr/lib/cgi-bin/" y "/var/www/vhosts/dominio.com/cgi-bin/"
$comando
    = '/usr/cgi-bin/Firmar 123456789012 10501 000911104827 978';

# Ejecutamos el comando y leemos el resultado
@resultado = qx( $comando );
$firma     = $resultado[0];         # Nos quedamos con la primera línea

# Salida del resultado en pantalla
print "context-type: text/html\n\n";
print "La firma vale: $firma\n";
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero aún así devuelve firma como vacío. He preguntado en el servidor y la ruta donde está el archivo salida.cgi y Firmar está en el directorio "/var/www/vhosts/dominio.com/cgi-bin/", la versión de linux es CentOS.
¿Se os ocurre cual puede ser el error?
¿Otra duda es que hace esto " qx( $comando );" y esto "use CGI qw/:standard/; use CGI::Carp qw(fatalsToBrowser); "? porque he estado revisando otros scripts y no lo he visto.

Ahh, por cierto lo de PHP ya lo he conseguido solucionar con CURL, basta con poner un printf de la firma en el script, PHP ya recoge todo y lo trata como una variable.

Muchas Gracias por toda la ayuda prestada, siento molestaros tanto.
yazo
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-07-05 17:55 @788

Publicidad

Notapor explorer » 2007-07-09 18:59 @832

Si Firmar está en /var/www/vhosts/dominio.com/cgi-bin/ entonces ese es el camino que debes poner en lugar de /usr/cgi-bin/ dentro del programa (y cambiando dominio.com por el tuyo, claro).

De todas formas, veo que has puesto en el comentario que también has probado con ese camino. Haz lo siguiente. En la línea que pone $comando, la cambias por estas otras:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$comando = '/var/www/vhosts/dominio.com/cgi-bin/Firmar';

-x $comando or die "ERROR: el $comando no es ejecutable: $!\n";

$comando .= ' 123456789012 10501 000911104827 978';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

De esa manera hemos puesto un control para ver si de verdad salida.cgi encuentra o no a Firmar. En caso de que ocurra algo raro, y con la ayuda de CGI::Carp, verás el error en pantalla (algo así como ver los errores PHP, pero en Perl). Otra cosa: creo que faltan algunos argumentos.

qx( $comando ); sirve para ejecutar el comando en el sistema. También se podría haber escrito como `$comando` pero es más recomendable la primera opción. El resultado de la ejecución se devuelve como una lista de líneas, es decir, todo lo que se haya impreso se recibe y se puede meter en un array.

CGI es el módulo primordial para todo lo que tenga que ver en la confección de programas CGI. CGI::Carp es una extensión que manda los errores y avisos del programa a la pantalla en formato HTML para que los puedas ver desde el navegador.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado