• Publicidad

Ejecutar un bat en el servidor

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

Ejecutar un bat en el servidor

Notapor spiderguguin » 2007-06-22 14:02 @626

Hola a todos. Agradeceré mucho la ayuda de algún gurú. Tengo el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!C:\perl\bin\perl.exe -w  
use CGI qw(:standard);
print redirect( 'http://localhost/Auco/atavancese.php' );
sub inspeccionar_datos
 {
   local (*FORM_DATA) = @_;
   local ( $request_method, $query_string, @key_value_pairs,
               $key_value, $key, $value);
  $request_method = $ENV{'REQUEST_METHOD'};
    if ($request_method eq "GET") {  
        $query_string = $ENV{'QUERY_STRING'};
    } elsif ($request_method eq "POST") {
        read (STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
   } else {
        &return_error (500, "Server Error",
                            " No es posible utilizar ese metodo");
   }
 
   @key_value_pairs = split (/&/, $query_string);
   foreach $key_value (@key_value_pairs) {
       ($key, $value) = split (/=/, $key_value);
        $value =~ tr/+/ /;
        $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
     if (defined($FORM_DATA{$key})) {
           $FORM_DATA{$key} = join ("\0", $FORM_DATA{$key}, $value);
       } else {
           $FORM_DATA{$key} = $value;
       }
   }
}#!/usr/local/perl
&inspeccionar_datos (*fcalen);
$conciliacion = $fcalen{'conciliacion'};
$fecha1 = $fcalen{'fecha1'};
$fecha2 = $fcalen{'fecha2'};
$promedio = $fcalen{'promedio'};
$fecha3 = $fcalen{'fecha3'};
$fecha4 = $fcalen{'fecha4'};
$cmd = "prueba.bat $conciliacion $fecha1 $fecha2 $promedio $fecha3 $fecha4";
system($cmd);
exit(1);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Se supone que lo que hace es enviar las variables de un formulario de PHP a un pequeño BAT que ejecuta un programa desarrollado en Visual Dataflex el cual llena una base temporal.

Por favor, alguien que me diga por qué no funciona o en que la estoy regando.

Muchas gracias por su ayuda.
spiderguguin
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-06-22 13:50 @618

Publicidad

Notapor explorer » 2007-06-22 18:04 @794

Bienvenido a los foros de Perl en Español.

A ver si lo entiendo...

* Es un CGI, porque veo que usas el módulo CGI
* Lo primero que hace el CGI es mandar una redirección al cliente web a otra página PHP
* Se define una función llamada inspeccionar_datos() que lo que hace es recibir los parámetros pasados por la página que llama al CGI, tanto por el método GET como con el POST. Curioso, cuando se está usando ya el módulo CGI que nos ahorra todo este rollo
* Luego se llama a la función pasándole como parámetro el símbolo *fcalen, es decir, la función va a leer los parámetros pasados por la página que hace la petición al CGI y los va a guardar en un hash %fcalen
* Luego lee los valores almacenados en las claves 'conciliacion', 'fecha1', 'fecha2', 'promedio', 'fecha3', y 'fecha4', que se suponen son los campos de un formulario que estaba en la página o han sido pasados en el URL de la petición
* Luego asignas un string a la variable $cmd
* Ejecutas el string con system()
* Terminas

El fallo que puedo ver es que quizás prueba.dat no está en el PATH del usuario que ejecuta el servidor web. Prueba a poner el camino completo delante de prueba.bat.
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

Gracias

Notapor spiderguguin » 2007-06-25 10:17 @470

Antes que nada gracias por tomarse el tiempo de responder.

Efectivamente si lleva el path C:/prueba.bat perdon por no incluirlo, pero cuando ejecuto mi pagina se escucha una campana de error de windows pero no se visualiza ningun error y no corre el bat mas sin en embargo si me meto a ms-dos y ejecuto prueba.bat lo hace sin problemas.

Nuevamente gracias
spiderguguin
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-06-22 13:50 @618

Notapor explorer » 2007-06-25 10:36 @483

¿C:/prueba.bat?

¿No será C:\\prueba.bat?

Yo no trabajo en Windows por razones obvias, pero juraría que para ejecutar un fichero bat... quizás haya que hacerlo a través del cmd.exe, con lo que entonces el system debería ejecutar: cmd.exe c:\\prueba.bat .
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

Notapor spiderguguin » 2007-06-25 12:28 @561

:cry: lo intenté así como usted me dijo pero nada, de hecho me manda en un PHP nuevo lo que trae el bat pero no lo ejecuta en el servidor.

Ejemplo:
Si quiero correr la calculadora en el servidor se supone que debería de funcionar con:

Código: Seleccionar todo
$cmd = "C:\\calc.bat";
system($cmd);


donde el bat sería:
Código: Seleccionar todo
c:
calc.exe (suponiendo que este archivo se encuentra dentro de c:)

pero no abre la calculadora, sino que abre una página nueva:

Código: Seleccionar todo
C:\wamp\www\Auco>c: C:\wamp\www\Auco>calc.exe


y el medidor de progreso avanza muy lento y nunca abre la calculadora en el servidor.

¡¡¡¡¡¡¡¡¡ Auxilio por favor !!!!!!!!!!!
spiderguguin
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-06-22 13:50 @618

Notapor explorer » 2007-06-25 16:24 @725

¿No hay ningún mensaje extraño en los ficheros de actividad (.log) del servidor web?
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

Notapor explorer » 2007-06-25 16:30 @729

¿Con qué navegador estás intentando arrancar el bat? Si es con el explorer, quizás las políticas de seguridad de Windows lo están impidiendo.
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

Notapor kidd » 2007-06-26 09:54 @454

Hola:

Yo trabajo sobre Windows y a mi me jala sin ningún problema. Por ejemplo, intenta con el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
chdir("C:\\windows");
system("calc.exe");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Tanto en el command line como en mi navegador, se abrió el programa de la calculadora de Windows sin ningún problema.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor spiderguguin » 2007-06-26 09:55 @455

Les agradezco mucho explorer y kidd voy a probar todos sus consejos y en cuanto jale la aplicacion yo se los hare saber son ustedes muy amables :D
spiderguguin
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-06-22 13:50 @618

Pregunta para kidd

Notapor spiderguguin » 2007-06-27 12:12 @550

disculpe en mi archivo de perl solo pongo esas dos lineas o que mas lleva
spiderguguin
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2007-06-22 13:50 @618

Siguiente

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados

cron