Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Ejecutar un bat en el servidor Responder al tema
Nuevo tema


Página 1 de 1  [ 12 mensajes ] 
 
Nota 2007-06-22 14:02 @626

Perlero Nuevo
Registrado: 2007-06-22 13:50 @618
Mensajes: 6
Ejecutar un bat en el servidor
Hola a todos. Agradeceré mucho la ayuda de algún gurú. Tengo el siguiente código:

Syntax: [ Download ] [ Hide ]
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);


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.


Nota 2007-06-22 18:04 @794
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
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.


Nota 2007-06-25 10:17 @470

Perlero Nuevo
Registrado: 2007-06-22 13:50 @618
Mensajes: 6
Gracias
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


Nota 2007-06-25 10:36 @483
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
¿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 .


Nota 2007-06-25 12:28 @561

Perlero Nuevo
Registrado: 2007-06-22 13:50 @618
Mensajes: 6
: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:
$cmd = "C:\\calc.bat";
system($cmd);


donde el bat sería:
Código:
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:
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 !!!!!!!!!!!


Nota 2007-06-25 16:24 @725
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
¿No hay ningún mensaje extraño en los ficheros de actividad (.log) del servidor web?


Nota 2007-06-25 16:30 @729
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10250
¿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.


Nota 2007-06-26 09:54 @454
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

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

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
chdir("C:\\windows");
system("calc.exe");


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


Nota 2007-06-26 09:55 @455

Perlero Nuevo
Registrado: 2007-06-22 13:50 @618
Mensajes: 6
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


Nota 2007-06-27 12:12 @550

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


Nota 2007-06-27 15:34 @690
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

Dependiendo de la ruta de tu perl, pero como primera línea siempre debes de poner el llamado shebang:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
#!C:/perl/perl.exe


Saludos

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2007-06-27 17:25 @767

Perlero Nuevo
Registrado: 2007-06-22 13:50 @618
Mensajes: 6
hola:

entonces queda así:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
#!C:\perl\bin\perl.exe -w
chdir("C:\\windows");
system("calc.exe");
exit(1);


Pero no me abre nada.

Perdón tanta insistencia.


Responder al tema  [ 12 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO