< < E-NEF > >
Prog. Perl | Art Roman | Voyager | Cartes ()
                  dragon                     e-nef                 Plan du Site
Contact
my.e-nef v0.1
  • Kernel Linux stable: 2.6
  • Perl: 5.8
  • Apache: 2.0
  • mod_perl: 2.0
  • postgres: 8.0


Rubriques


Recherche sur le Site





Bookmarks


Recommandation de Lecture


Questions ?
Dites nous ce que vous
avez pensé de cette page

 Excellent
 Vaut le coup de le lire
 Sans intérêt

 Pas assez technique
 Juste comme il faut
 Trop technique



Cours de Perl
next up previous index
suivant: Émuler une crontab sous monter: Utiliser la base de précédent: Installer une variable d'environnement   Index

Installer un Script perl en tant que service (NT seulement)

Un service NT répond à un interfaçage de message pour le démarrage, la mise en pause et l'arrêt. Un script seul ne peut donc être installé.

Le NT Ressource Kit 3 fournit INSTSRV et ANYSRV, le premier installant le second qui est l'interface service.

Comme exemple on crée un service appelé PerlService :


`c:\\peliproc\\instsrv.exe PerlService c:\\peliproc\\srvany.exe`;

Cela installe une entrée dans la base de registres. Vous pouvez alors finir l'installation à la main comme spécifié dans la documentation de ces outils ou modifier via Win32::Registry les entrées :


$p = "SYSTEM\\CurrentControlSet\\Services\\PerlService";
$main::HKEY_LOCAL_MACHINE->Open($p,$srv)||die "open: $!";

et maintenant créer la clef Parameters contenant

Application
le chemin complet vers le script
AppParameters
les paramètres d'exécution
AppDirectory
le chemin d'où il sera lancé

ce que l'on fait ainsi :


$srv->Create("Parameters", $param) or die "Create: $!";
$param->SetValueEx("Application", 0, REG_SZ, "c:\\perlproc\\scan.cmd");
$param->SetValueEx("AppParameters", 0, REG_SZ, "2>c:\\temp\\toto.out");
$param->SetValueEx("AppDirectory", 0, REG_SZ, "c:\\perlproc\\");

On lance donc scan.cmd dans le répertoire c:\perlproc (N.B. :: il faut répéter le #2830#> séparateur de répertoire sous NT, qui sert à 'échapper' i.e. utiliser les caractères spéciaux sous perl, donc pour avoir #2831#> on le double: \\).

L'argument est 2>c:\temp\toto.out, on redirige la sortie erreur standard (STDERR sous perl, descripteur de fichier numéro 2 sous tout les O.S.) vers un fichier.

Maintenant il faut pouvoir démarrer le service.


`d:\\winnt\\system32\\net.exe start PerlService`;

La seule chose que cet exemple passe sous silence est que le service est démarré avec le compte SYSTEM qui sous NT a plus de priorités que les autres comptes, même Administrator. Il est possible en modifiant la base de Registres de spécifier un autre utilisateur, mais ... il faut rentrer un mot de passe, ce que je ne sais pas faire via la base de registres ...


next up previous index
suivant: Émuler une crontab sous monter: Utiliser la base de précédent: Installer une variable d'environnement   Index
Olivier Aubert
1999-06-01



Publicité

© Copyright 1998-2010 Emmanuel PIERRE. Libre reproduction sous Licence LLDDv1.
Pour tout commentaire, webmaster@e-nef.com
Dernière MaJ 31/01/2018

Valid XHTML 1.0!

No Patents/