BASH test dans liste expression regulière

Résolu
sbouli Messages postés 208 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche à gérer une liste d'exception, si le fichier contient dans son nom un des mot clef je ne traite pas.

donc si le fichier s'appel toto_access.log je traite pas ....

IGNORE_FILES_ALERTE="access,infos" 

 if [[ $IGNORE_FILES_ALERTE == *'basename ${fich}'* ]] 
then 
            echo "je ne traite pas ce fichier basename ${fich}, il fait parti des exceptions aux alertes" 
else 
            //ici je bosse                  
fi 


evidemment mon [[ ne semble pas fonctionner .... au secours ...

Stéphane

6 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Rassures-moi, c'est pas du Perl, c'est du Bash non ?
    0
  2. sbouli Messages postés 208 Statut Membre 2
     
    j'ai dis perl ?? non non bash of course ... désolé
    0
  3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Ok, et elle contient quoi la variable "${fich}" ?
    0
  4. sbouli Messages postés 208 Statut Membre 2
     
    for fich in 'ls -1 ${LOGS_PATH}/*.log 2>/dev/null'
    do
    


    donc en clair le nom de chaque fichier, je veux pas traiter totot_access.log ou access_toto.log
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Ça j'avais compris, ce que je veux c'est savoir à quoi ressemble le nom de tes fichiers et comprendre pourquoi le test échoue ;-\

      Sans ça je ne peux pas t'aider ;-(
      0
    2. sbouli Messages postés 208 Statut Membre 2
       
      ben c'est le fichiers de log apache donc rien de particulier ...
      je comprend pas bien la question mais par exemple tout à l'heure j'ai eu une alerte sur un fichier nommé : /var/log/apache2/access_edistrigame.log
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Ben ne te casses pas la tête :

      for fich in 'ls -1 ${LOGS_PATH}/*.log 2>/dev/null | egrep -v 'access|infos''
      0
    4. sbouli Messages postés 208 Statut Membre 2
       
      a non pas possible, je les exclus des alertes mails / sms mais je les traites quand même par ftp .... donc il faut qu'ils passent dans la boucles
      j'ai simplifié le code pour la question :)
      0
    5. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Essaies ça (le retour à la ligne dans la déclaration de la variable "IGNORE_FILES_ALERTE" est voulu et normal, c'est pour pouvoir le traiter avec "fgrep") :

      IGNORE_FILES_ALERTE="access 
      infos" 
      
      fgrep -q -e "${IGNORE_FILES_ALERTE}" <<<${fich} 
      
      retval=$? 
      
      if [[ ${retval} = 0 ]] 
      then  
                  echo "je ne traite pas ce fichier basename ${fich}, il fait parti des exceptions aux alertes"  
      else  
                  //ici je bosse                   
      fi 
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Rassures-moi, c'est pas du Perl, c'est du Bash non ?
    Je pense qu'il fait allergie à Perl ;-DDD, toi aussi d'ailleurs --------------------

    ----------------> Je sors ;-)))
    0
  7. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Tu peux sortir oui et loin ;-))

    Pour la petite histoire, le titre initial était : PERL test dans liste expression regulière

    D'où mon interrogation ;-)
    0