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

Shell et commandes GNU Discussion :

Problème dans un script avec awk


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut Problème dans un script avec awk
    bonjour

    j'ai crée un script bash en utilisant principalement awk je rencontre un souci avec la commande "system" qui ne me retourne pas la commande exécuté

    voici le script :

    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
    INSTANCE=$1
    SERVEUR=$2
    ssh root@${SERVEUR} "su - oracle -c \"srvctl status database -d ${INSTANCE}\"" | awk '
    {
    node=$2
    instance=$10
    code=$4$5
     
            if (  code ~ /encours/ ){
                 message = message"  "node" "instance
                 pop[node] = instance
                 result = 1
                #print node" " instance
            }
    }
    END {
         if ( result ){
            for ( node in pop){
                    compteur ++
                    #print "WARNING : le(s) instance(s) "node" est ou sont pas demarre(s) sur le(s) serveur(s) " pop[node]
                    node_bis = node" "node
                    tableau  = tableau" "pop[node]
                    cmd="exit 2"
                    }
            } else {
                    compteur = 0
                    #print "OK : les deux nodes sont demarres"
                    cmd="exit 0"
            }
     
     
             if ( compteur == 1 ){
     
                    print "WARNING : instance "node" est pas demarre sur le serveur " pop[node] " | rsult='1';0;0;0;1"
     
     
             } else if ( compteur > 1){
     
                            print "WARNING : les instances "node_bis" sont  pas demarres sur les serveurs " tableau " | rsult='1';0;0;0;1"
             }else{
                            print "OK : les deux nodes sont demarres | rsult='0';0;0;0;1"
             }
     
     
                    system(cmd)
     
    }
    voici le résultat :

    WARNING : les instances ORBIS2 ORBIS2 sont pas demarres sur les serveurs srv-orbis1 srv-orbis2 | rsult=1;0;0;0;1


    donc il m'affiche bien ce que je souhaite par contre la commande system("exit 2") n'est pas appliquée puisque lorsque je fais un echo $? aprés l'exécution du script, je n'ai pas la valeur 2 qui s'affiche mais 0

    [root@Srv-nagios plugins_nagios_chimag]# echo $?
    0
    Pourriez-vous me renseigner ?

    je vous remercie

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    Je ne vois pas l’intérêt du system et d'ailleurs, c'est normal que cela ne fonctionne pas, son but est d’exécuter une commande externe...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ awk '{exit 2}' <<<""
    $ echo $?
    2
    $ awk '{exit 1}' <<<""
    $ echo $?
    1

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Tout a parfaitement fonctionné. Tu as demandé d'exécuter une commande système dont la seule instruction était de sortir de la commande système.
    Tu n'as rien fait pour récupérer la valeur de retour de retour de la-dite commande système.
    Mais tu n'as pas besoin de la syntaxe pour récupérer la valeur d'une commande système. Au mieux tu as besoin d'une variable code_de_sortie. Pour le reste, disedorgue a tout dit.

  4. #4
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut c'est tout bon
    oui effectivement je me suis compliqué la vie !!!! je pensais pas que le "exit 2" fonctionnerait sous awk mais que c'était réservé au bash j'ai donc ajouter "exit 2" et j'obtiens bien le retour souhaité en faisant le echo $?

    Merci les gars

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

Discussions similaires

  1. problème formatage de fichier avec awk
    Par nenekes dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 02/11/2006, 12h53
  2. probleme de script.. avec un formulaire
    Par leniM dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/08/2006, 17h56
  3. Problème de guillemet avec awk
    Par lili_bzh dans le forum Linux
    Réponses: 4
    Dernier message: 13/02/2006, 15h37
  4. Réponses: 33
    Dernier message: 15/10/2004, 16h19
  5. Problème sur une cmd avec AWK
    Par OrangeBud dans le forum Linux
    Réponses: 3
    Dernier message: 02/06/2004, 10h51

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