coolmec28 Posted February 15, 2004 Share Posted February 15, 2004 Voilà j'aimerais connaitre le groupe d'un utilisateur, simplement en tapant son nom comme argument. Pour ce faire j'ai fait ceci dans un fichier sous vi que j'ai nommer test, je l'ai rendu excécutable, Puis je tape ceci : ./test nom_utilisateur Mais il me sort par moment plusieurs lignes de résultat. Je ne comprend pas trop pq, si quelqu'un pouvait m'aider ca serait cool Voici la syntaxe que j'ai mis dans mon fichier shell script : #!/bin/bash USER=`cat /etc/passwd | cut -d':' -f1,4 | grep "$1" | cut -d':' -f2` GROUP=`cat /etc/passwd | cut -d':' -f1,3 | grep "$USER" | cut -d':' -f1` echo "le nom du groupe de l'utilisateur est : $GROUP" Comme on peut le voir je compare l'argument 1 avec le champ 1 et 4, que je coupe ensuite en prenant juste le champ 2 qui est le num du groupe. Ensuite je vais comparé cette valeur avec le champ 3 dans /etc/group et je recoupe pour qu'il me renvoit juste le champ 1, ceci afin d'avoir le nom du groupe en question. Donc je ne comprend pas pq il sort plusieurs lignes de résultat pour certains utilisateurs. Voilà si quelqu'un pouvait m'aider, je l'en remercie d'avance Link to comment Share on other sites More sharing options...
gauret Posted February 15, 2004 Share Posted February 15, 2004 Le group ID de bin est 1 par exemple. Si tu lances ton script sur bin, tu vas récupérer les groupes 1, 10, 11, 12, 21, etc... tout ce qui contient 1 quoi. Loin de moi l'idée de te décourager d'apprendre le bash, mais il existe la commande "groups" qui fait ce que tu veux : $ groups bin bin : bin daemon sys A+ Gauret Link to comment Share on other sites More sharing options...
coolmec28 Posted February 15, 2004 Author Share Posted February 15, 2004 Merci pour ta réponse m'aide beaucoup dans la compréhension du fonctionnement de ce que j'ai tapé ;-) Et effectivement la commande groups et largement bien plus rapide. Link to comment Share on other sites More sharing options...
gauret Posted February 15, 2004 Share Posted February 15, 2004 Pour garder l'idée de ton script, tu peux remplacer le grep "$USER" par un grep "^$USER$" et voir si ça marche mieux. le "^" signifie "début de ligne" et le "$" signifie "fin de ligne" A+ Gauret Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.