IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

lancer un script en tant que services windows


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 46
    Points : 32
    Points
    32
    Par défaut lancer un script en tant que services windows
    Avec win32::daemon je dois pouvoir installer un service.
    Mais j'ai bien du mal à trouver qques ex d'utilisation.

    Je voudrais avec perl2exe faire que mon script soit autonome
    Par ex:
    j'execute:
    fichier.exe
    il s'instal en service
    et exécute les fonctions du script

    En gros le mode installation du service et le script lui-même sont ds le même fichier.

    Merci de votre aide

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 21
    Points : 23
    Points
    23
    Par défaut
    Hello,

    Je cherche à faire la même chose et j'ai trouvé des info ici :

    Win32:aemon.

    Je suis en train de faire des essais de mon côté, tenons nous au courant.

    Bonne journée,

    Manuxme.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Sinon il y a Perl Dev Kit de ActiveState qui le fait très bien.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Bonjour !!!

    Voilà, je me permets de poster sur ce thread car j'essaie de faire la même chose que vous en utilisisant le module Win32:aemon.

    J'ai donc deux scripts, service_install.pl pour installer le service et service.pl, le script qui sera démarré par le service:

    Voilà le code:

    script service_install.pl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #!c:\perl\bin\perl.exe
     
    use Win32::Daemon;
    %Hash =(
            machine => '',
            name => 'PerlTest',
            display => 'Oh my god, perl is a service !',
            path =>$^X,
            user =>'',
            pwd =>'',
            description =>'Une description du service !!!',
            parameters =>'d:\documents\EDI\tests\service.pl',
    );
     
     
    if(Win32::Daemon::CreateService(\%Hash))
    {
          print "Service ajouté\n";
    }
    else
    {
          print "impossible d'ajouter le service: ".Win32::FormatMessage(Win32::Daemon::GetLastError());
    }

    et le script service.pl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #!c:\perl\bin\perl.exe
    # Tell the OS to start processing the service...
       use Win32::Daemon;
       use TX2::Tools;
        Win32::Daemon::StartService();
     
        # Wait until the service manager is ready for us to continue...
        while( SERVICE_START_PENDING != Win32::Daemon::State() )
        {
            sleep( 1 );
        }
     
        # Now let the service manager know that we are running...
        Win32::Daemon::State( SERVICE_RUNNING );
     
        # Okay, go ahead and process stuff...
        open(fic,">>c:log_service.txt") or die "Erreur ouverture\n";
     
     
        print fic &TX2::Tools::GetDate('ldate')."\n";
        print fic "service demarre\n";
        print fic"------------------------------\n";
        close(fic);
     
        # Tell the OS that the service is terminating...
        Win32::Daemon::StopService();

    Or, quand je démarre le service dans outils d'amdministrations -> services, j'ai le message d'erreur suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Impossible de démarrer le service Oh my god ..... sur ordinateur local.
    Le service n'a pas renvoyé d'erreur, Ceci peut êtr eune erreur interne windows ou une erreur interne du service.
    Si le problème persiste, contactez votre administrateur système.
    Est-ce que quelqu'un sait ce qu'il se passe et comment règler le problème ??

    Merci pour votre aide !!!
    tout le monde est d'accord pour critiquer la pensée unique

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Bonjour à tous,

    Je relance sur ce thread car je n'arrive pas à m'en sortir et j'aurai besoin d'un petit coups de main .

    Voilà le script service.pl qui ne fait que lancer notepad.exe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    #!c:\perl\bin\perl.exe
     
    # Tell the OS to start processing the service...
    use Win32;
    use Win32::Daemon;
     
     
     
    $SERVICE_SLEEP_TIME=20;
    $PrevState=SERVICE_START_PENDING;
    while(SERVICE_START_PENDING != ($State=Win32::Daemon::State()))
    {
          if(SERVICE_START_PENDING == $State)
          {
                Win32::Daemon::State(SERVICE_RUNNING);
                $PrevState=SERVICE_RUNNING;
          }
          elsif(SERVICE_STOP_PENDING==$State)
          {
                Win32::Daemon::State(SERVICE_STOPPED);
          }
          elsif(SERVICE_PAUSE_PENDING==$State)
          {
                Win32::Daemon::State(SERVICE_PAUSED);
                $PrevState=SERVICE_PAUSED;
                next; 
          }
          elsif (SERVICE_CONTINUE_PENDING==$State)
          {
                Win32::Daemon::State(SERVICE_RUNNING);
                $PrevState=SERVICE_RUNNING;
                next;
          }
          elsif (SERVICE_STOP_PENDING==$State)
          {
                Win32::Daemon::State(SERVICE_STOPPED);
                $PrevState=SERVICE_STOPPED;
                next;
          }
          elsif(SERVICE_RUNNING==$State)
          {
                system("notepad.exe");
          }
          else
          {
                Win32::Daemon::State($PrevState);
          }
     
              if(SERVICE_CONTROL_NONE != (my $Message=Win32::Daemon::QueryLastMessage()))
              {
                    if(SERVICE_CONTROL_INTERROGATE==$Message)
                    {
                          Win32::Daemon::State($PrevState);
                    }
                    elsif(SERVICE_CONTROL_SHUTDOWN==$Message)
                    {
                          Win32::Daemon::State(SERVICE_STOP_PENDING,25000);
                    }
              }
          Win32::Sleep($SERVICE_SLEEP_TIME); 
    }
    Win32::Daemon::StopService();
    Mais lorsque je clique sur Démarrer dans le Service Control Manager, j'ai le message d'erreur suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Impossible de démarrer le service .... sur ordinateur local.
    Erreur 1053: le service n'a pas répondu assez vite à la demande de lancement ou de contrôle.
    S'il vous plait, un coups de main , je suis perdu et démotivé...

    Meric pour votre aide !!!

    Guillaume.
    tout le monde est d'accord pour critiquer la pensée unique

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Citation Envoyé par kuzco
    Sinon il y a Perl Dev Kit de ActiveState qui le fait très bien.

    J'ai essayer avec Perl dev kit (perlsvc).
    J'arrive à installer le service mais pas à le démarrer, exactement comme avec Win32:aemon.

    Aurais tu un exemple à me filer pour que je regarde si ça fonctionne sur mon PC. Ou une note explicative (j'ai lu le user guide sur perlsvc fournit par activestate).

    Merci pour votre aide !!!

    Guillaume.
    tout le monde est d'accord pour critiquer la pensée unique

Discussions similaires

  1. [WS 2008 R2] Lancer un exe en tant que service sous 2008
    Par RamDevTeam dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 01/06/2010, 10h30
  2. Image VMWare Player en tant que service Windows
    Par Plageman dans le forum Virtualisation
    Réponses: 0
    Dernier message: 09/12/2009, 12h21
  3. Comment installer JBoss 4 en tant que service Windows ?
    Par Invité dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 30/01/2007, 13h56
  4. Lancer une appli Java en tant que Service Windows
    Par danyboy85 dans le forum Général Java
    Réponses: 4
    Dernier message: 28/09/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo