• Publicidad

Servicios de Windows

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Servicios de Windows

Notapor scout » 2009-12-05 20:08 @881

Hola, gente. Quería consultarles si alguno de vosotros implementó que cada x tiempo se ejecute un exe o el mismo quede a la espera de x tiempo de forma invisible al usuario...

Vi un apunte sobre servicios en estos foros pero no me aclaro desde Perl... por eso pregunto sobre otras variantes o experiencias...

Al día de hoy tengo un software de terceros haciendo de temporizador para un exe y/o bat; obviamente me gustaría darle la oportunidad a Perl de remediar este punto...
Última edición por explorer el 2009-12-13 12:31 @563, editado 2 veces en total
Razón: Ortografía
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Publicidad

Re: Servicios de windows

Notapor explorer » 2009-12-05 20:44 @905

Yo para eso siempre he usado la facilidad de las Tareas Programadas en Windows. O el comando at.

En CPAN encontré el Win32::Daemon::Simple, que creo que es el que estás buscando.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Servicios de windows

Notapor scout » 2009-12-07 18:23 @808

A ver... pruebo el ejemplo que figura en CPAN... y me da un error... ¿Alguno sabe a qué responde?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.  use FindBin qw($Bin $Script);
  2.         use File::Spec;
  3.         use Win32::Daemon::Simple
  4.                 Service => 'chiflado',
  5.                 Name => 'chifladoss',
  6.                 Version => '1.0',
  7.                 Info => {
  8.                         display =>  'SERVICEDISPLAYNAME',
  9.                         description => 'SERVICEDESCRIPTION',
  10.                         user    =>  '',
  11.                         pwd     =>  '',
  12.                         interactive => 0,
  13.         #               parameters => "-- foo bar baz",
  14.                 },
  15.                 Params => { # the default parameters
  16.                         Tick => 0,
  17.                         Talkative => 0,
  18.                         Interval => 4, # minutes
  19.                         LogFile => "c:/perl/Servicio.log",
  20.                         Description => <<"*END*", Tick : (0/1) controls whether the service writes a "tick" message to  the log once a minute if there's nothing to do         Talkative : controls the amount of logging information
  21.        Interval : how often does the service look for new or modified files  (in minutes) LogFile : the path to the log file  ...    *END*    },
  22.                Param_modify => {
  23.                        LogFile => sub {File::Spec->rel2abs($_[0])},
  24.                        Interval => sub {
  25.                                no warnings;
  26.                                my $interval = 0+$_[0];
  27.                                die "The interval must be a positive number!\n"
  28.                                        unless $interval > 0;
  29.                                return $interval
  30.                        },
  31.                        Tick => sub {return ($_[0] ? 1 : 0)},
  32.                },
  33.                Run_params => { # parameters for this run of the service
  34.                        #...
  35.                };
  36.  
  37.        # initialization
  38.  
  39.        ServiceLoop(\&doTheJob);
  40.  
  41.        # cleanup
  42.  
  43.        Log("Going down");
  44.        exit;
  45.  
  46.        # definition of doTheJob()
  47.        # You may want to call DoEvents() within the doTheJob() at places where it
  48.        # would be safe to pause or stop the service if the processing takes a lot of time.
  49.        # Eg. DoEvents( \&close_db, \&open_db, sub {close_db(); cleanup();1})
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


El error es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Can't find string terminator "*END*" anywhere before EOF at c:\perl\servicio.plline 20.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2009-12-07 18:40 @819, editado 1 vez en total
Razón: Ortografía, bloques de código
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Servicios de windows

Notapor explorer » 2009-12-07 18:49 @825

Has copiado mal el ejemplo. En la línea 20 debe ser:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         Description => <<'*END*',
  2. Tick : (0/1) controls whether the service writes a "tick" message to
  3.   the log once a minute if there's nothing to do
  4. Talkative : controls the amount of logging information
  5. Interval : how often does the service look for new or modified files
  6.  (in minutes)
  7. LogFile : the path to the log file
  8. ...
  9. *END*
  10.        },
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Es decir:
* con <<'*END*' estamos indicando que lo que sigue, hasta la marca *END* se debe tomar de forma literal y será el valor correspondiente a la clave Description

* Esa marca, *END*, debe estar al principio de una línea, en la primera columna.

El mensaje de error dice que no encuentra la marca: porque no está en la primera columna.

Esto es lo que se llama un here-document. Más información en perlop, busca por <<END.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Servicios de windows

Notapor scout » 2009-12-07 18:57 @831

¡Huuyyyy! Es imperdonable... Bueno... Ahora vino el clásico

Can't locate Win32/Daemon/Simple.pm in @INC

Busqué en el PPM pero no me figura como dæmon...
Lo bajé a disco y, bueno, ¿cómo se instala desde el disco este módulo? Algo simple pero como el ppm siempre salió al rescate salvo en este caso...
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Servicios de windows

Notapor explorer » 2009-12-08 06:50 @326

Pues... hay un problema...

Según la matriz de versiones, la última versión de ese módulo sí que funciona en Windows.

En ActiveState no lo encuentro, pero sí en trouchelle.com. Y ahí veo que se instala bien en Perl v5.8 (módulos W de la v5.8) pero falla con Perl v5.10, pero solo porque no encuentra el módulo Win32::Daemon. Si estás usando Perl v5.10, intentaría instalar antes Win32::Daemon, y luego probar a bajar el Win32::Daemon::Simple desde trouchelle.com.

Para una instalación manual del módulo, debes leer el fichero README.

Primero, debes asegurarte de tener instalados estos módulos antes (las dependencias):
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
* Win32::Daemon
* Win32::Console
* Win32::Registry
    - you need either version 0.08 or the patch from
           http://jenda.krynicky.cz/#Win32::Registry2
           or http://www24.brinkster.com/jenda/index.html#Win32::Registry2
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y luego seguir con el tradicional
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
   perl Makefile.PL
   make
   make test
   make install
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
solo que en Windows deberás usar el nmake (lo encontrarás en las páginas de Microsoft).

Alternativamente, existe el programa EngInSite Perl Module Manager, que trae el nmake incorporado, y te servirá para bajar los módulos desde CPAN.

Si todo se tuerce... puedes probar a mandar un correo a jenda, usuario registrado en estos foros, que es el creador del módulo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Servicios de windows

Notapor scout » 2009-12-08 19:32 @855

Bueno, el EngInSite Perl Module Manager me deja fuera de combate el SO, ¡jajaja! Funciona un par de búsquedas y plancha...

De instalarlo manualmente repaso los pasos porque me parece que algo estoy haciendo mal; me da el siguiente error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
C:\Perl>perl C:\Perl\lib\Win32-Daemon-Simple-0.2.6\Makefile.PL
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Warning: prerequisite Win32::Daemon 0 not found.
Could not open 'Simple.pm': No such file or directory at C:/Perl/lib/ExtUtils/MM_Unix.pm line 2718.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Respecto a los módulos previos ya los instalé... menos este dæmon que es el que necesito...

Lo curioso es que en la carpeta del módulo no hay ningún install.pl como indicas, solo hay
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
TestSimpleService.pl
Simple.pm
Makefile.PL
Manifiest
Readme
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Servicios de windows

Notapor explorer » 2009-12-08 20:25 @892

El error dice que el módulo Win32::Daemon no está instalado, así que primero debes instalarlo antes de intentar instalar el Win32::Daemon::Simple.

Y yo no he dicho nada de install.pl.

Por favor, fíjate bien en las instrucciones :)

Repito que sería más sencillo bajarlo desde trouchelle.com y luego instalarlo con el PPM. Pero siempre después de instalar antes los dos módulos de los que depende (bueno, 3 según el Makefile.PL).

Actualización: ahora que lo pienso, si tienes el programa cpan instalado en ese Perl, puedes usarlo para que haga todos los pasos de instalación. Prueba ejecutando

cpan Win32::Daemon::Simple

y él se encargará de todo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Servicios de windows

Notapor scout » 2009-12-10 01:39 @110

Bueno, lo probé en dos ordenadores y no funcionó. Me parece que estaré limitado... grgr.

Ojalá se pueda trabajar, crear, instalar, desinstalar servicios con Perl... Es un punto pendiente dentro de Perl. Seguiré buscando... una solución... Gracias igualmente por todo...

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
C:\Perl>cpan Win32::Daemon::Simple
Set up gcc environment - 3.4.5 (mingw-vista special r3)
CPAN: Storable loaded ok (v2.21)
Going to read C:\Perl\cpan\Metadata
Database was generated on Tue, 08 Dec 2009 23:31:53 GMT
Running install for module 'Win32::Daemon::Simple'
Running make for J/JE/JENDA/Win32-Daemon-Simple-0.2.6.tar.gz
CPAN: Digest::SHA loaded ok (v5.45)
CPAN: Compress::Zlib loaded ok (v2.008)
Checksum for C:\Perl\cpan\sources\authors\id\J\JE\JENDA\Win32-Daemon-Simple-0.2.6.tar.gz ok
CPAN: Archive::Tar loaded ok (v1.38_01)
Win32-Daemon-Simple-0.2.6/
Win32-Daemon-Simple-0.2.6/Changes
Win32-Daemon-Simple-0.2.6/Makefile.PL
Win32-Daemon-Simple-0.2.6/MANIFEST
Win32-Daemon-Simple-0.2.6/README
Win32-Daemon-Simple-0.2.6/Simple.pm
Win32-Daemon-Simple-0.2.6/TestSimpleService.pl
CPAN: File::Temp loaded ok
(v0.18) CPAN.pm: Going to build J/JE/JENDA/Win32-Daemon-Simple-0.2.6.tar.gz
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Checking if your kit is complete...
Looks good
Warning: prerequisite Win32::Daemon 0 not found.
Writing Makefile for Win32::Daemon::Simple
---- Unsatisfied dependencies detected during ----
----  JENDA/Win32-Daemon-Simple-0.2.6.tar.gz  ----
Win32::Daemon [requires]
Shall I follow them and prepend them to the queue of modules we are processing right now? [yes] yes
Running make test                       Delayed until after prerequisites
Running make install                    Delayed until after prerequisites
Running install for module 'Win32::Daemon'
The module Win32::Daemon isn't available on CPAN.
Either the module has not yet been uploaded to CPAN, or it is
temporary unavailable. Please contact the author to find out
more about the status. Try 'i Win32::Daemon'.
Running make for J/JE/JENDA/Win32-Daemon-Simple-0.2.6.tar.gz
Has already been unwrapped into directory C:\Perl\cpan\build\Win32-Daemon-Simple-0.2.6-j8dJ2C
CPAN.pm: Going to build J/JE/JENDA/Win32-Daemon-Simple-0.2.6.tar.gz
cp Simple.pm blib\lib\Win32\Daemon\Simple.pm
cp TestSimpleService.pl blib\lib\Win32\Daemon\TestSimpleService.pl
JENDA/Win32-Daemon-Simple-0.2.6.tar.gz
dmake -- OK
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make test
'No tests defined for Win32::Daemon::Simple extension.'
JENDA/Win32-Daemon-Simple-0.2.6.tar.gz
Tests succeeded but one dependency not OK (Win32::Daemon)
Warning (usually harmless): 'YAML' not installed, will not store persistent state
JENDA/Win32-Daemon-Simple-0.2.6.tar.gz
[dependencies] -- NA
Running make install
make test had returned bad status, won't install without force
C:\Perl>Shall I follow them and prepend them to the queue
of modules we are processing right now? [yes]
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Servicios de windows

Notapor explorer » 2009-12-10 05:16 @261

El problema es el siguiente: cpan intenta instalar el módulo Win32::Daemon, pero el autor de este módulo no lo ha actualizado desde hace años. Ya no está en CPAN. Ni ese ni ninguno de los otros que ha escrito y registrado en CPAN, desde el 2001.

En cambio, si accedes a la página del autor, verás que tiene una página específica para el módulo Win32::Daemon, con instrucciones para su instalación, tanto de forma directa con FTP, o a través de PPM. La última versión es del 2008.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Intermedio

¿Quién está conectado?

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

cron