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

Programmation et administration système Perl Discussion :

Perl Timeout et Module DHCP Watch


Sujet :

Programmation et administration système Perl

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut Perl Timeout et Module DHCP Watch
    Bonjour à tous,

    Je suis actuellement entrain d'écrire un petit script pour vérifier qu'un serveur DHCP fonctionne. Si il fonctionne je dois indiquer le temps pris par la requête. Si il ne fonctionne pas (ou si il prend + de X secondes), je dois mettre un message d'erreur.

    Pour ce faire, j'utilise le module NET:HCP::WATCH (http://search.cpan.org/~ejdrs/Net-DH...-2.03/Watch.pm et le module Object:estroyer (conseillé par Jedai : http://www.developpez.net/forums/d36...-timeout-perl/).

    J'ai d’abord créé un petit script pour vérifier que mon implémentation de l'alarm fonctionne :

    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
    use Object::Destroyer;
     
    eval {
     
        local $SIG{ALRM} = sub { die("alarm\n") };
     
        alarm(4);
    	my $sentry = Object::Destroyer->new( sub {alarm(0)} );
     
    	#Get Status
        sleep (2)
     
    };
     if ($@) {
     
    		print "Je rentre via l'alarm";
     
    }
    else {
       print "je ne rentre pas via l'alarm";}
    Ce script fonctionne donc le code pour l'alarm aussi.

    Je passe donc au script pour tester le serveur DHCP :

    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
    use Time::HiRes;
    use Object::Destroyer;
    use Net::DHCP::Watch;
     
     
      # server name
      my $Server = '192.168.1.1';
      # this machine ip and ethernet address
      my $IP     = '192.168.1.2';
      my $Ether  = '00:23:CD:CE:43:DC';
      my $timeout = 5;
     
      my $stat ='';
     
     # Net::DHCP::Watch object
      my $dhcpw = new Net::DHCP::Watch({
                    server => $Server,
                    client => $IP,
                    ether  => $Ether,
    		timeout => $timeout
            });
     
      # Open network
      $dhcpw->watch();
     
      my $start = [ Time::HiRes::gettimeofday( ) ];
     
    eval {
     
        local $SIG{ALRM} = sub { die("alarm\n") };
     
        alarm(4);
    	my $sentry = Object::Destroyer->new( sub {alarm(0)} );
     
    	#Get Status
        $stat = $dhcpw ->status;
     
    };
     if ($@) {
     
    		print "Error";
    }
    else {
     
      $elapsed = Time::HiRes::tv_interval( $start );
      $elapsed = $elapsed * 1000;
     
      # print results
     
      if ( $stat->{Ok}  ) 
      {  
        print "Remote DHCP $Server online.\n";
    	print "Dhcptime;$elapsed;ms";
     }
     else 
     { print "Error";
     }
    }
    Quand je mets un bon serveur DHCP qui fonctionne, il m'indique assez rapidement la bonne réponse.

    Quand j'indique un serveur qui n'est pas bon (et donc sans service DHCP), il reste coincé dans la fonction "$dhcpw ->status;" et ne veut pas en sortir malgré mon alarm et mon timeout.

    Je n'arrive pas à le faire sortir de cette fonction. Est-ce relatif au module DHCP? Si c'est le cas, je n'arrive pas à comprendre pourquoi je ne sais pas le faire stopper.

    Un grand merci pour votre aide!

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut
    Je tourne sur windows ActivePerl et sur le site (http://docs.activestate.com/activepe...don_t_seem_to_) ils indiquent que alarm() ne semblent pas fonctionner ...

    Cela me parait bizarre vu que mon script de test d'alarm fonctionne. J'ai donc essayé de tester avec ualarm() qui lui est beaucoup trop court pour ce que je cherche à faire.

    Auriez-vous une ideée ou quelque chose qui remplacer alarm()?

    A savoir que le timeout que j'ai mis dans le packet ne fonctionne pas non plus

    Un grand merci d'avance

Discussions similaires

  1. Version de Perl, version des modules
    Par cassis2k dans le forum Modules
    Réponses: 4
    Dernier message: 30/12/2010, 15h14
  2. se connecter à un module DHCP
    Par Emcy dans le forum Hardware
    Réponses: 6
    Dernier message: 10/08/2007, 12h00
  3. lister tout les modules installer de perl
    Par black_code dans le forum Modules
    Réponses: 6
    Dernier message: 05/08/2005, 18h20
  4. Installation du module DBI pour perl sous W2K
    Par tomcat dans le forum Modules
    Réponses: 6
    Dernier message: 22/01/2004, 11h54

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