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 :

Récupération des erreurs sur la commande systeme nslookup


Sujet :

Programmation et administration système Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Récupération des erreurs sur la commande systeme nslookup
    Bonjour,

    Je m'excuse d'avance si ce problème a déja était résolu, mais n'ayant rien trouver lors d'une recherche sur les postes (peut être que j'ai dut mal taper ma recherche) je vous le pose.

    Ayant débuté dans le langage PERL il y a 2 semaine, je suis entraint d'écrire un scripte PERL (sur windows), à partir d'un scripte Shell Unix, pour récupéré des informations SNMP. Cette partie de récupération marche bien. Or a un moment de mon scripte je doit faire appel a une commande system pour la vérification de la résolution DNS.

    Pour ce la j'utilise $stk = ` nslookup -norecurse $Hostname $Hostname`; pour executé la commande . Donc le résultat se stocke dans la variable $stk. Jusque l'à tout est normal, mais lorsqu'il y a des erreurs dans la commande systeme (hôte non trouvé par le DNS, serveur DNS incorrecte ...) les erreurs qui s'affiche avec des *** sur l'invite de commande ne sont pas récupéré dans la variable $stk.

    Exemple de message d'erreur sur cmd :
    *** Can't find server address ...
    *** .... : Non-existent domain
    J'aimerais savoir si il serais possible de récupéré ces erreurs, car je doit vérifier que le le serveur DNS marche dans tous les cas possibles donc je doit vérifié si certain mots d'erreur apparaissent.


    Voici le script que j'utilise :

    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
     my $Hostname = ' '; #mettre un nom d'hôte
     #envoi la commande systeme et récupére le resultat
     
    my $stk=`nslookup -norecurse $Hostname $Hostname`;
    my $stk1 =$?;
     
    my $not_resp = 0;   #compteur d'erreur
     
      if($stk1 > 0){printf("\n CRITICAL : $Hostname[$i] DNS polling failed \n");
                    exit 1;}
      else{      # Recherche des bouts de phrases pour récupéré les erreurs
     
         $stk =~ s/\n//g;   # mise en place de la sortie sur une seul ligne
     
         if($stk =~ /Specified server is not available/ || $stk =~ /timed-out/){
           printf("\n Le DNS $Hostname[$i] a un temps de reponse trop eleve  \n"); 
           $not_resp++;}
     
         elsif($stk =~ /Can\'t find server address'/){ # le ' apres address n'existe pas mais j'ai dut le mettre car sinon tous le reste devenait rouge sur le post
           printf("\n Adresse serveur $Hostname[$i] inutilisable \n"); 
           $not_resp++;}
     
         elsif($stk =~ /Name:/){
           printf("Le DNS $Hostname[$i] répond correctement \n");}
     
         elsif($stk =~ /Non-existent domain/){
           printf("\n Le DNS $Hostname[$i] repond correctement \n");}
     
         elsif($stk =~ /No response form server/){
           printf("\n Le DNS $Hostname[$i] répond No response \n"); 
           $not_resp++;}
     
         elsif($stk =~ /No records/){
           printf("\n Le DNS $Hostname[$i] répond No records \n"); 
           $not_resp++;}
     
         elsif($stk =~ /Connection refused/){
           printf("\n Le DNS $Hostname[$i] répond Connection refused \n"); 
           $not_resp++;}
     
         elsif($stk =~ /Server failed/){
           printf("\n Le DNS $Hostname[$i] répond Server failed \n");
           $not_resp++;}
     
         elsif($stk =~ /Refused/){
           printf("\n Le DNS $Hostname[$i] répond Refused \n");
           $not_resp++;}
     
         elsif($stk =~ /Format error/){
         printf("\n Le DNS $Hostname[$i] répond Format error \n");
         $not_resp++;}
     
         else{
           printf("\n Erreur inconnu sur le DNS $Hostname[$i] : $stk \n");
           $not_resp++;}
     
           }
     
        if($not_resp > 0){     printf("\nProbleme dans la resolution DNS\n");}
        else{
         printf( "\n $Hostname DNS polling successfull \n"); }
    En résultat je trouve toujours " Erreur inconnu sur le DNS ... " et " Probleme ans la resolution DNS" car aucun des bouts de phrase est trouvé.

    Merci d'avance de votre aide.

  2. #2
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    J'ai résolue mon problème, j'ai juste transféré les 2 sorties de la commandes (STDOUT et STDERR) vers un fichier en rajoutant dans la commande system
    ' > result_error.txt 2>&1 '.

    Grâce a ca j'ai put faire mes recherches de bout de phrase d'erreur pour trouver l'erreur correcte en ouvrant le fichier ' result_error ' et en l'analysant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération des erreurs sur SQL Express 2005
    Par luddo91 dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 18/06/2008, 22h59
  2. Gestion des erreurs sur une commande multiple
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 15h03
  3. Calcul des stats sur SYS et SYSTEM
    Par orafrance dans le forum Oracle
    Réponses: 8
    Dernier message: 05/10/2005, 16h25
  4. Interception des erreurs sur un dbnavigator
    Par Jeepy dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/05/2005, 16h59
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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