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 :

AWK - Savoir si un group placé en argument existe dans /etc/group ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut AWK - Savoir si un group placé en argument existe dans /etc/group ?
    Bonjour;

    J'ai un shell général (Main) dans lequel je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo ">> Verification de la presence du groupe Unix placé en argument. Group:*<>"$4"<>*"
    awk -v grp=$4 -F ':' '{
            $1~/^\$grp$/ { print "===> Le groupe existe dans /etc/group.OK.****" }
    }' /etc/group >> $FIC_LOG
    Mais cela ne fonctionne pas !
    Comment passer l'argument numero 4 ($4) de mon shell general (Main) à l'AWK pour qu'il print dans mon fichier de log (FIC_LOG) ?

    Ou si vous avez la solution avec egrep ou grep je suis preneur...!

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Bonjour,

    awk n'utilise pas le signe dollar pour distinguer ses variables
    il vaut peut-être mieux vérifier l'égalité plutôt qu'une correspondance de regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    awk -v grp="$4" -F':' 'BEGIN{
    print ">> Verification de la presence du groupe Unix placé en argument. Group:*<>"grp"<>*"
    }
    $1 == grp { print "===> Le groupe existe dans /etc/group.OK.****" }' /etc/group >> $FIC_LOG
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Alternative qui devrait le faire aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo ">> Verification de la presence du groupe Unix placé en argument. Group:*<>\"$4\"<>*"
     
    egrep -qo "^${4}:" /etc/group && echo "===> Le groupe existe dans /etc/group.OK.****" >> $FIC_LOG

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut
    OK ! Merci beaucoup pour ce renseignement.

    Je suis passé par ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    echo ">> Verification de la presence du groupe Unix placé en argument. Group:*<>"$4"<>*"
    if [ `cat /etc/group | awk -F ":" '{print $1}' | grep -wc $4` -eq 1 ]
    then
    echo "==> Le groupe est existant. OK."
    else
           echo "**** Erreur le groupe Unix n'existe pas ! voir /etc/group";
          exit 1;
    fi

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    beurk
    c'est horrible.
    uuoc
    uuog
    uuo[

    getent n'est pas install(é|able) ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    grep "^$1:" /etc/group 1>/dev/null\
        && echo "$1 présent dans /etc/group"\
        || echo "groupe $1 n'existe pas dans /etc/group"
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. savoir si l'utilisteur est dans un groupe
    Par popofpopof dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/12/2007, 21h22
  2. Enregistrer un nouveau serveur dans un groupe de serveur ?
    Par pop bob dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/07/2005, 16h18
  3. Regrouper des champs dans un GROUP BY
    Par kaiserazo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 11/07/2005, 08h43
  4. GROUP_ID dans requete GROUP BY
    Par quemener dans le forum Oracle
    Réponses: 11
    Dernier message: 25/10/2004, 10h59
  5. fonction dont les argument sont dans un dico
    Par GConstant dans le forum Général Python
    Réponses: 1
    Dernier message: 12/08/2004, 18h24

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