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

Linux Discussion :

Awk : sélection d'un UID > 1000


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Awk : sélection d'un UID > 1000
    Bonjour


    Je souhaite, à partir de la commande getent passwd, prendre le chemin du répertoire utilisateur et son UID dans le but de faire un chown sur le dossier.

    Voila ce que j'ai pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for i in `getent passwd`
    do
            # retourne le rep client
            HOMEUSER=$( echo $i | awk -F":"  '{print $6}')
            # Donne l'UID utilisateur
            USERUID=$( echo $i | awk -F":" '{print $3}')
     
     
    echo    "chown $USERUID $HOMEUSER -R"
    done
    C'est presque ce que je souhaite mais je ne veux pas avoir les utilisateurs ayant un UID inférieur à 1000.

    Comment faire passer ça à awk ?

    merci ++

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par aternatik Voir le message
    Bonjour


    Je souhaite, à partir de la commande getent passwd, prendre le chemin du répertoire utilisateur et son UID dans le but de faire un chown sur le dossier.

    Voila ce que j'ai pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for i in `getent passwd`
    do
            # retourne le rep client
            HOMEUSER=$( echo $i | awk -F":"  '{print $6}')
            # Donne l'UID utilisateur
            USERUID=$( echo $i | awk -F":" '{print $3}')
     
     
    echo    "chown $USERUID $HOMEUSER -R"
    done
    C'est presque ce que je souhaite mais je ne veux pas avoir les utilisateurs ayant un UID inférieur à 1000.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    cat /etc/passwd |while read ligne
    do
            # retourne le rep client
            HOMEUSER=`echo $ligne |cut -f6 -d:`
            # Donne l'UID utilisateur
            USERUID=`echo $ligne |cut -f3 -d:`
     
            test $USERUID -gt 1000 && chown $USERUID $HOMEUSER -R
    done

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Un grand merci pour la commande test

    Hormis le fait que j'utilise getent passwd ( les utilisateurs sont dans LDAP), ça fonctionne à merveille et beaucoup plus rapidement qu'avec awk.

    Comment rajouter des conditions pour le test ? Pas trouvé pour mettre plusieurs arguments à la commande

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par aternatik Voir le message
    Un grand merci pour la commande test

    Hormis le fait que j'utilise getent passwd ( les utilisateurs sont dans LDAP), ça fonctionne à merveille et beaucoup plus rapidement qu'avec awk.
    Normal. awk est un programme assez puissant donc il est plus lourd que "cut"...

    Citation Envoyé par aternatik Voir le message
    Comment rajouter des conditions pour le test ? Pas trouvé pour mettre plusieurs arguments à la commande
    Utiliser les connecteurs "-a" (and) et/ou "-o" (or)
    * vérifier que USERID > 1000 et < 5000 => test $USERID -gt 1000 -a $USERID -lt 5000
    * vérifier que USERID <= 1000 ou >= 5000 => test $USERID -le 1000 -o $USERID -ge 5000
    * vérifier que (USERID <= 1000 ou >= 5000) et != 0 => test \( $USERID -le 1000 -o $USERID -ge 5000 \) -a $USERID -ne 0

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

Discussions similaires

  1. Sélection paragraphe via awk
    Par jolicare dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 30/07/2014, 09h59
  2. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  3. Couleur de sélection par défaut
    Par sicard_51 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/04/2003, 23h35
  4. [langage] awk et sed dans script perl
    Par scoti dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2003, 18h26
  5. Déplacer la sélection d'une ligne dans un stringgrid
    Par jer64 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 14/03/2003, 00h57

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