Probleme avc la commande awk

Résolu
frip -  
 frip -
Bonjour a tous ,
j'ai un script qui doit recuperer des valeurs dans un fichier qui est le resultat d'une tablespace,le pb est que j'arrive a recuperer les valeurs recherchées mais j'ai un pb avec la comparaison des valeurs le but a la fin c'est qu'il m'alerte si cette valeur est superieur a 95.
voici mon script
#!/bin/bash
cat fic | grep ^ANAPRESU >fichier
cat fic | grep ^ANAPTST >> fichier
cat fic | grep ^INDANAP >>fichier
cat fic | grep ^RBS >> fichier
cat fic | grep ^SYSTEM >> fichier
cat fic | grep ^TEMP >> fichier
awk 'Begin { print"test la valeur du tablespace";FS=""}
while $7 > 30
{ print " warning la table "$1" est pleine a "$7"% "}
End' fichier
il me donne cette erreur
awk: cmd. ligne:1: while $7 > 30
awk: cmd. ligne:1: ^ syntax error
comme quoi j'ai un pb avec ma syntaxe de test ,qui peut m'aider a voir l'erreur car jarrive pas a la retrouver
Configuration: vmware(machine virtuelle) avc nxserver

9 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    awk 'Begin { print"test la valeur du tablespace";FS=""}
    { if ($7 > 30)  print " warning la table "$1" est pleine a "$7"% "} 
    ;-))
    3
  2. frip93 Messages postés 2 Statut Membre
     
    merci jipicy
    ça marche té un gentil homme et comme tu l'a su le dire toi meme le savoir est bon que s'il est partagé
    gracias
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      De nada ;-))
      0
  3. frip93 Messages postés 2 Statut Membre
     
    salut jipicy
    j'ai un pb avec grep et je ne vois pas l'erreur car au lieu de me prendre les 7 ligne que je le demande il me prend presque toutes les lignes choses que je ne comprend alors que pour d'autres fchiers il fait bien le grep.
    je poste la mon scripts et le fichier surlequel j'effctue le grep .j'aimerai juste avoir les 7 lignes contenant le pourcentage des tables

    #!/bin/bash
    HOME=RAUD_BASES/
    cd $HOME
    fic=Raud_base.PHA
    cat $fic | grep ^DATA >fichier
    cat $fic | grep ^DATACHIM >> fichier
    cat $fic | grep ^IND >>fichier
    cat $fic | grep ^INDXCHIM >> fichier
    cat $fic | grep ^RBS >> fichier
    cat $fic | grep ^RBS_BATCH >> fichier
    cat $fic | grep ^SYSTEM >> fichier
    cat $fic | grep ^TEMP >> fichier
    awk 'Begin { print"test la valeur du tablespace";FS=""}
    {if ($7 > 90) print "CRITICAL TABLE "$1" "}
    End' fichier

    voici le fichier
    ============+======+======+=======+==========+======+=========
    TABLESPACE Taille Libre +GdLib +GdLib Nbre %Occup
    (Mo) (Mo) (Mo) (Ko) Libr
    ============+======+======+=======+==========+======+=========
    DATA 520 54 54 55536 1 95 %
    DATACHIM 360 90 90 92152 1 75 %
    IND 1100 303 53 54000 53 72 %
    INDXCHIM 100 4 3 3344 23 96 %
    RBS 80 0 0 312 1 92 %
    RBS_BATCH 250 50 43 43992 3 91 %
    SYSTEM 50 38 38 39280 1 23 %
    TEMP 200 197 56 57040 61 2 %
    *
    Fri Feb 6 13:48:30 MET 2009
    HOPITAL PNOMHOP (PCODHOP) aud_exttab-d.sql le 06/02/2009 13h
    PHARMA PVERSIO - Base PHA

    LISTE DES TABLES DE CHIMIO AVEC NOMBRE EXTENTS >= 1

    TABLE TBS IniKo NxtKo INC EXT MAX TotKo
    ------------------------------ ----------- ------- ------ ---- ---- ---- -------
    ACTE DATACHIM 104 104 0 1 100 120
    ACTE DATACHIM 104 104 0 1 100 120
    ALLERGIE DATACHIM 104 104 0 1 100 16
    ALLERGIE DATACHIM 104 104 0 1 100 120
    ALLERGIE DATACHIM 104 104 0 1 100 120
    ATTENTE DATACHIM 104 104 0 1 100 120
    ATTENTE DATACHIM 104 104 0 1 100 120
    CATEGORI DATACHIM 104 104 0 1 100 120
    CATEGORI DATACHIM 104 104 0 1 100 120
    CLASSETH DATACHIM 104 104 0 1 100 80
    CLASSETH DATACHIM 104 104 0 3 100 360
    CLASSETH DATACHIM 104 104 0 1 100 120
    COMPOPDT DATACHIM 104 104 0 1 200 120
    CONDUITE DATACHIM 104 104 0 1 100 120
    CONDUITE DATACHIM 104 104 0 1 100 120
    CONDUITE DATACHIM 104 104 0 1 100 120
    CONNEX DATACHIM 104 104 0 1 100 120
    CONNEX DATACHIM 104 104 0 1 100 120
    CONNEX DATACHIM 104 104 0 1 100 120
    CTLDCI_MED DATACHIM 104 104 0 1 200 120
    CTRLPAT DATACHIM 104 104 0 1 200 120

    j'ai fai un copie collé donc les colonne ne sont pas droites.
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    C'est un exemple avec un des fichiers où le grep ne marchent pas ?

    En attendant essaye comme ça :
    #!/bin/bash
    
    HOME=RAUD_BASES/
    cd $HOME
    fic=Raud_base.PHA 
    
    awk 'BEGIN { 
    print "test la valeur du tablespace"
    }
    /^(DATA|IND|RBS|SYSTEM|TEMP)/ && $7 > 90 {
    print "CRITICAL TABLE "$1 ": "$7
    }
    ' < "$fic"
    0
    1. frip
       
      Slt jipicy
      j'ai essayé ce ke ta proposé il ne marche tjrs pas il me donne plus de ligne demandée que ce qu'on lui demande.
      voici le resultat qu'on je lance le script
      laptopl@laptop:~$ ./frip.sh
      test la valeur du tablespace
      CRITICAL TABLE DATA: 95
      CRITICAL TABLE INDXCHIM: 96
      CRITICAL TABLE RBS: 92
      CRITICAL TABLE RBS_BATCH: 91
      CRITICAL TABLE INDICATION: 200
      CRITICAL TABLE INDICATION_DCI: 200
      CRITICAL TABLE INDICPHYSIO: 200
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDICDACLEK: 100
      CRITICAL TABLE INDICDCCLEK: 100
      CRITICAL TABLE INDICINCLEK: 100
      CRITICAL TABLE INDICPHYSIO_I9CLEUNIK: 100
      CRITICAL TABLE INDICPRCLEK: 100
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      CRITICAL TABLE INDEX: MAX
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    En me basant sur l'exemple de fichier que tu as donné, voila ce que ça donne chez moi :
    [tmpfs]$ cat Raud_base.PHA
    ============+======+======+=======+==========+======+=========
    TABLESPACE Taille Libre +GdLib +GdLib Nbre %Occup
    (Mo) (Mo) (Mo) (Ko) Libr
    ============+======+======+=======+==========+======+=========
    DATA 520 54 54 55536 1 95 %
    DATACHIM 360 90 90 92152 1 75 %
    IND 1100 303 53 54000 53 72 %
    INDXCHIM 100 4 3 3344 23 96 %
    RBS 80 0 0 312 1 92 %
    RBS_BATCH 250 50 43 43992 3 91 %
    SYSTEM 50 38 38 39280 1 23 %
    TEMP 200 197 56 57040 61 2 %
    *
    Fri Feb 6 13:48:30 MET 2009
    HOPITAL PNOMHOP (PCODHOP) aud_exttab-d.sql le 06/02/2009 13h
    PHARMA PVERSIO - Base PHA
    
    LISTE DES TABLES DE CHIMIO AVEC NOMBRE EXTENTS >= 1
    
    TABLE TBS IniKo NxtKo INC EXT MAX TotKo
    ------------------------------ ----------- ------- ------ ---- ---- ---- -------
    ACTE DATACHIM 104 104 0 1 100 120
    ACTE DATACHIM 104 104 0 1 100 120
    ALLERGIE DATACHIM 104 104 0 1 100 16
    ALLERGIE DATACHIM 104 104 0 1 100 120
    ALLERGIE DATACHIM 104 104 0 1 100 120
    ATTENTE DATACHIM 104 104 0 1 100 120
    ATTENTE DATACHIM 104 104 0 1 100 120
    CATEGORI DATACHIM 104 104 0 1 100 120
    CATEGORI DATACHIM 104 104 0 1 100 120
    CLASSETH DATACHIM 104 104 0 1 100 80
    CLASSETH DATACHIM 104 104 0 3 100 360
    CLASSETH DATACHIM 104 104 0 1 100 120
    COMPOPDT DATACHIM 104 104 0 1 200 120
    CONDUITE DATACHIM 104 104 0 1 100 120
    CONDUITE DATACHIM 104 104 0 1 100 120
    CONDUITE DATACHIM 104 104 0 1 100 120
    CONNEX DATACHIM 104 104 0 1 100 120
    CONNEX DATACHIM 104 104 0 1 100 120
    CONNEX DATACHIM 104 104 0 1 100 120
    CTLDCI_MED DATACHIM 104 104 0 1 200 120
    CTRLPAT DATACHIM 104 104 0 1 200 120
    
    [tmpfs]$ awk 'BEGIN {
    print "test la valeur du tablespace"
    }
    /^(DATA|IND|RBS|SYSTEM|TEMP)/ && $7 > 90 {
    print "CRITICAL TABLE "$1 ": "$7
    }
    ' Raud_base.PHA
    
    test la valeur du tablespace
    CRITICAL TABLE DATA: 95
    CRITICAL TABLE INDXCHIM: 96
    CRITICAL TABLE RBS: 92
    CRITICAL TABLE RBS_BATCH: 91
    
    [tmpfs]$
    Ou il y a un problème sur ton fichier (vérifie les fins de lignes (cat -A fichier)), ou tu ne m'as pas donné le fichier dans son intégralité et des paramètres m'échappent ;-((
    0
  7. frip
     
    effectivement je t'ai pas donné le fichier en intégralité car de dernier est vraiment long, j'ai verifié les fins de lignes avec la commande que tu m'a donné cela me semble etre normal.quand je coupe le fichier en deux le resultat est parfait mais kon je l'applique sur la totalité la ça bug.pourtant ta commande /^(DATA|IND|SYSTEM|TEMP) demande bien a selectionnes les caracteres spécifiés donc je ne vois pas.
    voici une partie du debut et de la fin du fichier effectivement il m'affiche dans le resultat les INDICDACLEK INDEX MAX il doit prendre ces colonnes la .
    ============+======+======+=======+==========+======+=========
    TABLESPACE Taille Libre +GdLib +GdLib Nbre %Occup
    (Mo) (Mo) (Mo) (Ko) Libr
    ============+======+======+=======+==========+======+=========
    DATA 520 54 54 55536 1 95 %
    DATACHIM 360 90 90 92152 1 75 %
    IND 1100 303 53 54000 53 72 %
    INDXCHIM 100 4 3 3344 23 96 %
    RBS 80 0 0 312 1 92 %
    RBS_BATCH 250 50 43 43992 3 91 %
    SYSTEM 50 38 38 39280 1 23 %
    TEMP 200 197 56 57040 61 2 %
    *
    Fri Feb 6 13:48:30 MET 2009
    HOPITAL PNOMHOP (PCODHOP) aud_exttab-d.sql le 06/02/2009 13h
    PHARMA PVERSIO - Base PHA
    HOPITAL PNOMHOP (PCODHOP) aud_exttab-d.sql le 06/02/2009 13h
    PHARMA PVERSIO - Base PHA

    LISTE DES INDEX DE CHIMIO AVEC NOMBRE EXTENTS >= 1

    INDEX TBS IniKo NxtKo INC EXT MAX TotKo
    ------------------------------ ----------- ------- ------ ---- ---- ---- -------
    INDICDACLEK INDXCHIM 104 16 0 1 100 120
    INDICDCCLEK INDXCHIM 104 16 0 1 100 120
    INDICINCLEK INDXCHIM 104 16 0 1 100 120
    INDICPHYSIO_I9CLEUNIK INDXCHIM 104 16 0 1 100 120
    INDICPRCLEK INDXCHIM 104 16 0 1 100 120
    INTFPCODESV INDXCHIM 104 16 0 1 100 120
    INTFPCODESV INDXCHIM 104 16 0 1 100 120
    INTFPCODEU2 INDXCHIM 104 16 0 1 100 120
    INTFPCODEU2 INDXCHIM 104 16 0 1 100 120
    INTFPNOMPAT INDXCHIM 104 16 0 1 100 120
    INTFPNOMPAT INDXCHIM 104 16 0 28 100 552
    INTFPNOOBST INDXCHIM 104 16 0 1 #### 120
    INTFPNOOBST INDXCHIM 104 16 0 180 #### 2984
    INTFPPACLEK INDXCHIM 104 16 0 1 100 120
    INTFPPACLEK INDXCHIM 104 16 0 1 100 120
    INTFTCODEIF INDXCHIM 104 16 0 1 100 120
    INTFTCODEIF INDXCHIM 104 16 0 1 100 120
    INTFTI5CLEK INDXCHIM 104 16 0 1 100 120
    INTFTI5CLEK INDXCHIM 104 16 0 1 100 120
    INTFTM0CLEK INDXCHIM 104 16 0 1 100 120
    INTFTM0CLEK INDXCHIM 104 16 0 1 100 120
    INTFTNMSGG INDXCHIM 104 16 0 1 100 120
    INTFTNMSGG INDXCHIM 104 16 0 1 100 120
    INTF_CODEPT INDXCHIM 104 16 0 1 100 120
    INTF_CODEX1 INDXCHIM 104 16 0 1 100 120

    INDEX TBS IniKo NxtKo INC EXT MAX TotKo
    ------------------------------ ----------- ------- ------ ---- ---- ---- -------
    LIGNE_CODEANA IND 104 16 0 1 100 120
    LIGNE_CODENOMENCLA IND 104 16 0 5 100 184
    LIGNE_DGCLEUNIK IND 104 16 0 1 100 120
    LIGNE_DSCLEUNIK IND 104 16 0 1 100 120
    LIGNE_MACLEUNIK IND 104 16 0 9 100 248
    LIGNE_NMCLEUNIK IND 104 16 0 5 100 184
    LIGNE_NUMMARCHE IND 104 16 0 9 100 248
    LIGNE_SERVICE IND 304 56 0 3 100 480
    LIINDEX2 IND 2520 256 0 1 100 2520
    LOCALL3CLEK DATA 104 16 0 1 100 120
    LOINDEX3 IND 2520 256 0 1 100 2520
    LOTDISP_E2CLEUNIK IND 304 56 0 8 100 880
    LOTDISP_F0CLEUNIK IND 104 16 0 1 100 120
    LOTDISP_I1CLEUNIK IND 104 16 0 1 100 120
    LOTDISP_M0CLEUNIKADM IND 104 16 0 21 100 472
    LOTDISP_PLCLEUNIK IND 104 16 0 22 100 488
    LOTPDT_E2CLEUNIK IND 200 56 0 1 100 200
    LOTPDT_M4CLEUNIK IND 200 56 0 1 100 200
    LOTPDT_MAGASIN IND 200 56 0 1 100 200
    LPRETR_L2CLEUNIK IND 104 16 0 1 100 120
    LPRETR_PRCLEUNIK IND 104 16 0 1 100 120
    LPRETR_PTCLEUNIK IND 104 16 0 1 100 120
    LPROTOPH_FREQUENCE IND 104 16 0 1 100 120
    LPROTOPH_MODEADM IND 104 16 0 1 100 120
    LPROTOPH_P4CLEUNIK IND 104 16 0 1 100 120
    LPROTOPH_PRCLEUNIK IND 104 16 0 1 100 120
    LPROTOPH_VOIE IND 104 16 0 1 100 120
    M0INDEX2 IND 16 16 0 1 100 16
    M1INDEX2 IND 1504 152 0 2 100 1680
    MAGGARDE_MAGGARDE IND 104 16 0 1 100 120
    MAGGARDE_SERVICE IND 104 16 0 1 100 120
    MAINDEX2 IND 16 16 0 1 100 16
    MAINDEX3 IND 16 16 0 1 100 16
    MAINDEX4 IND 16 16 0 1 100 16
    MARCHE_DQCLEUNIK IND 104 16 0 1 100 120
    MATSPEC_RPCLEUNIK IND 104 16 0 1 100 120
    MATSPFPCLEK DATA 104 16 0 1 100 120
    MATSPMSCLEK DATA 104 16 0 1 100 120
    MATSPR0CLEK DATA 104 16 0 1 100 120
    MATSPTVCLEK DATA 104 16 0 1 100 120
    MDSERV_SERVICE IND 104 16 0 1 100 120
    MEDECIN_E2CLEUNIK IND 104 16 0 1 100 120
    MEDECIN_SERVICE IND 104 16 0 1 100 120
    MEDECIN_SMCLEUNIK IND 104 16 0 1 100 120
    MEDECIN_SPCLEUNIK IND 104 16 0 1 100 120
    MEDESSAI_ESCLEUNIK IND 104 16 0 1 100 120
    MEDESSAI_M0CLEUNIK IND 104 16 0 1 100 120
    MEDESSAR_ESCLEUNIK IND 104 16 0 1 100 120
    MEDESSAR_M0CLEUNIK IND 104 16 0 1 100 120
    MOTIFDIS_MDCLEUNIK IND 104 16 0 1 100 120
    MOTIFMTCLEK DATA 104 16 0 1 100 120
    MOTIFRET_M4CLEUNIK IND 104 16 0 1 100 120
    MQFORCODEMF DATA 104 16 0 1 100 120
    MQFORMFCLEK DATA 104 16 0 1 100 120
    MQFORUTCC
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaie comme ça :
    awk 'BEGIN {
    print "test la valeur du tablespace"
    }
    /^(DATA|IND[ X]|RBS|SYSTEM|TEMP)/ && $7 > 90 {
    print "CRITICAL TABLE "$1 ": "$7
    }
    ' Raud_base.PHA
    ;-)
    0
  9. frip
     
    merci jipi ça marche mais j'aimerai bien savoir pourquoi [ X] qu'est ce ki ça change dans la recherche du fichier.
    aussi je ne sais pas si tu peux m'aider dans le sens, je travaille en ce moment sur nagios j'aimerai associé a chacune des machines une documentation.un script permettant d'ouvrir openoffice et y enregistrer la doc.si ta une ptite idée
    0
  10. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Dans la 1ère forme de la regex :

    /^(DATA|IND|RBS|SYSTEM|TEMP)/


    que l'on peut réduire à :

    /^IND/

    pour l'explication concernant ton cas, on cherchait donc toutes les lignes commençant par IND, ce qui fait que les correspondances se faisaient aussi bien pour :

    IND 100 ...
    INDXCHIM
    INDEX
    INDICDACLEK
    INDICDCCLEK
    INDICINCLEK
    INDICPHYSIO
    INDICPRCLEK

    ce qui est logique.

    Par contre dans la dernière forme :

    ^IND[ X]

    on cherche toujours les lignes commençant par IND, mais suivies soit d'un espace ( ), soit d'un X, ce qui exclue toutes les autres formes.

    Pour ton autre question je n'ai pas tout compris, mais il vaut mieux que tu ouvres un autre post pour ça.

    ;-))
    0
    1. frip
       
      j'aimerai mettre une boucle if pour respectez les 3 conditions qui suit
      if $7 > 93 && $7 < 97 {print "WARNING TABLESPACE "$1 ": "$7
      if $7 > 97 {print " CRITICAL TABLESPACE "$1 ": "$7
      $7 < 93 {print " OK TABLESPACE "$1
      quand je l'ajoute dans le awk il ne respecte pas la condition du grep il me sort plusieur lignes
      0