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 POSIX Discussion :

Utilisation de grep [SH]


Sujet :

Shell et commandes POSIX

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Utilisation de grep
    Bonjour,

    Lorsque je tape la commande ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls /var/log | grep "pflog"
    j'obtiens en sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pflog
    pflog.0.gz
    pflog.1.gz
    Je souhaite uniquement récupérer les archives .gz

    Pourriez-vous me donner un petit coup de main s'il vous plaît ?

    Merci
    .Olivier

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 776
    Points
    30 776
    Par défaut
    Comme cela peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls /var/log/*.gz | grep "pflog"
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    Autre idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /var/log -name "*pflog*.gz" 2>/dev/null
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Merci beaucoup à tous les deux

    Voici ma fonction:
    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
     
    pflog() {
      while true; do
            echo -n "Display the PF logs (P)assed, (A)rchived or (Q)uit? "
            read answer
            case $answer in
                 p|P)
                      if [ -f /var/log/pflog ]; then
                          clear && doas tcpdump -nettr /var/log/pflog | more
                      else
                          echo "Unable to display the past logfile!"
                      fi
                      return 0
                     ;;
               a|A)
                     n_lgz=`find /var/log -name "*pflog*.gz" wc -l`
     
                     if [ "$n_lgz" -eq 0 ]; then
                          echo ">> No logs files found!"
                          exit 1
                     fi
     
                    a_lgz=`find /var/log -name "$pflog*.gz" | xargs -n1 basename`
                    echo "Available logs files are: $a_lgz"
                    echo -n "Which logs files do you wish to display? "
                    read f_lgz
     
                    if [ -f /var/log/$f_lgz ]; then
                         clear && doas zcat $f_lgz | tcpdump -netttr - | more
                    else
                         echo "$f_lgz: is not allowed!"
                    fi
                    return 0
                   ;;
             q|Q)
                    echo "GoodBye!"
                    break
                    ;;
                 *)
                    echo "$answer: is not allowed!"
                    ;;
            esac
     done
    }
    Le code fonctionne mais il est bancal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Available logs files are: $a_lgz"
    Je souhaiterai que le résultat s'affiche sur une seule ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo -n "Which logs files do you wish to display? "
    read f_lgz
    Est-il possible d'autoriser uniquement la saisie sous la forme pflog.0.gz etc. ?
    Ou alors, est-il possible d'affecter à un case $answer in les résultats obtenus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    case $answer in
      pflog.0.gz|pflog.1.gz etc.
    Ce serait plus simple pour gérer les erreurs de saisie.

    En vous remerciant par avance
    .Olivier

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Je souhaiterai que le résultat s'affiche sur une seule ligne.
    C'est drôle. Il faut faire l'inverse de ce que l'on conseille toujours. Ne pas protéger ta variable. La commande "echo" va manger le retour à la ligné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo Available logs files are: $a_lgz
    n_lgz=`find /var/log -name "*pflog*.gz" wc -l`
    Les `backticks` sont toujours surannés. $( )

    Est-il possible d'autoriser uniquement la saisie
    Il est libre Max. Y'en a même qui disent qu'ils l'ont vu voler. Tu ne contraindras pas l'utilisateur. Mais tu as le droit de filtrer.

    sous la forme pflog.0.gz etc. ?
    Je ne comprends ni la forme, ni le "etc".

    Ou alors, est-il possible d'affecter à un case $answer in les résultats obtenus:
    Pourquoi ne fais-tu pas une boîte de choix ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  6. #6
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Pourquoi ne fais-tu pas une boîte de choix ?
    Si le code suivant:
    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
    a_lgz=$(ls /var/log/*.gz | grep "pflog" | xargs -n 1 basename)
    echo Available logs files are: $a_lgz
    c_lgz=$(echo $a_lgz | sed 's/ /|/g')
    while true; do
            echo -n "Which PF logs files do you wish to display or (Q)uit? "
            read answer
            case $answer in
               $c_lgz)
                         clear && doas zcat /var/log/$answer | tcpdump -netttr - | more
                         ;;
                  q|Q)
                         echo "GoodBye!"
                         break
                         ;;
                     *)
                         echo "$answer: is not allowed!"
                        ;;
            esac
     done 
    }
    Cela m'indique toujours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pflog.0.gz: is not allowed!"
    Si je vérifie la variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "$c_lgz"
    pflog.0.gz|pflog.1.gz|pflog.2.gz
    Une idée ?
    .Olivier

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Une boîte de choix ! À toi de voir celle qui est installée et disponible sur ton système.

    Nom : Capture d'écran de 2020-05-29 15-11-59.png
Affichages : 131
Taille : 8,9 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    whiptail --menu --notags "Choisis ta trace" 20 50 10 $(ls /var/log/*.gz |sed '=;s@.*/@@')
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Pour le moment, je suis en console
    .Olivier

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Mais moi aussi. Sinon, j'aurais fait une proposition graphique

    Nom : Capture d'écran de 2020-05-29 15-41-17.png
Affichages : 130
Taille : 18,7 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zenity --list --title "Choisis ta trace" --column "Fichiers possibles" $(ls /var/log/*.gz |sed 's@.*/@@')
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  10. #10
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Il n'y a pas de solutions avec un switch case alors ?
    Pourtant je suis près du but
    .Olivier

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

Discussions similaires

  1. Utilisation de grep -v
    Par chtorrel dans le forum AIX
    Réponses: 4
    Dernier message: 09/07/2008, 14h08
  2. [debutant] utilisation de grep
    Par john stedd dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 17/11/2007, 11h14
  3. utiliser commande grep
    Par salim81 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 01/07/2007, 21h52
  4. Problème avec l'utilisation de grep
    Par fgalves dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 07/11/2006, 23h49
  5. Utilisation de grep
    Par julien.63 dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 07/08/2006, 17h46

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