Script bash connaitre tout les utilisateurs

Résolu/Fermé
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - Modifié par xunil2003 le 2/09/2012 à 18:55
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 6 sept. 2012 à 13:25
Bonjour,


Je cherche a faire un script pour données des droits a tout les utilisateurs pour chacun de mes postes.
Pour connaitre tout les utilisateurs
utilisateurs="cat /etc/group | fgrep 50" 
$utilisateurs | while read users; do  
echo "resultat :" $users 
done 
echo "" 
echo "resultat de utilisateurs :" $utilisateurs


Il m'affiche
[sandrine@localhost ~]$ cat /etc/group | fgrep 50
sandrine:x:500:
lea:x:501:
jean-pierre:x:502:
maintenance:x:503:
[sandrine@localhost ~]$

après j'ai pensé a faire
$ dir -c /home 
sandrine  jean-pierre  lea  maintenance  lost+found


le but est de récupérer uniquement les noms des utilisateurs pour qu'il s'ajoute automatiquement chacun dans le groupe de partage reseau
En gros faire ceci automatiquement :
# adduser sandrine partage_reseau. 
# adduser lea partage_reseau 
# adduser jean-pierre partage_reseau 
# adduser maintenance partage_reseau
via un variable.

Auriez -vous une idée de comment faire ?
Merci.

5 réponses

laoshu Messages postés 1231 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 24 mai 2015 350
2 sept. 2012 à 19:52
Bonjour,

Si « cat /etc/group | fgrep 50 » te renvoie bien tous les users, et rien que eux, alors essaye :

cat /etc/group | fgrep 50 | cut -d: -f1

Et normalement tu auras ce que tu cherches à obtenir...

bonne chance
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
2 sept. 2012 à 20:40
bonjour,

quand je fait ceci
$utilisateurs="cat /etc/group | fgrep 50 | cut -d: -f1"
$utilisateurs | while read users; do 
echo "resultat :" $users
#done
done
echo ""
echo "resultat de utilisateurs :" $utilisateurs


il m'affiche
utilisateur.sh: ligne2: =cat /etc/group | fgrep 50 | cut -d: -f1: Aucun fichier ou dossier de ce type


Directement dans le shell ça marche
$ cat /etc/group | fgrep 50 | cut -d: -f1
sandrine
lea
jean-pierre


Merci.
0
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
2 sept. 2012 à 21:12
Première ligne :
utilisateurs=('cat /etc/group | fgrep 50 | cut -d: -f1')
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
2 sept. 2012 à 21:17
Salut tuxboy,

Attention avec la mise en page du forum qui ne prend pas en compte les quotes inversées ;-((

De toute façon cette syntaxe est quasiment obsolète, mieux vaut lui préféré "$(commande)" :
utilisateurs=$(cat /etc/group | fgrep 50 | cut -d: -f1)

Sans compter que la création de cette variable n'est pas nécessaire ;-)
0
tuxboy Messages postés 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
2 sept. 2012 à 21:21
ça m'apprendra à ne pas réfléchir, merci d'avoir rectifié. :p
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
2 sept. 2012 à 21:12
Salut,

while read name
do 
echo "adduser ${name} partage_reseau"
done < <(awk -F":" '/x:50/ { print $1 }' /etc/group)

0
salut!

je ne sais pas ce qu'est le mieux

awk -F":" '/x:50/ { print $1 }' /etc/group | xargs -I{} adduser {} partage_reseau

ou

awk -F":" '/x:50/ { print "adduser "$1" partage_reseau" }' /etc/group | sh
?

qu'en pensez-vous?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 sept. 2012 à 08:41
Salut,

Les deux seront sûrement mieux qu'une boucle while :-)

Merci.
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 3/09/2012 à 15:39
Bonjour,

merci pour vos réponses.

Dans le fichier "smb.conf" il faut que j'ajoute les utilisateurs autorisé en écriture, comme ceci :
write list = sandrine lea jean-pierre maintenance

avec une variable
write list = $les_utilisateurs


mais pour avoir la liste des utilisateurs sur une seul ligne avec un espace entre chaque nom d'utilisateur, comment dois je faire ?

Merci.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 sept. 2012 à 15:40
Salut,

Il suffit de récupérer la liste dans une variable et de ne pas quoter cette dernière :

liste=$(awk -F":" '/x:50/ { print $1 }' /etc/group)
echo ${liste}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 6/09/2012 à 13:18
Bonjour,

J'ai besoin d'ajoute tous les utilisateurs directement dans le fichier
 /etc/group

a la fin de la ligne
users:x:100:

Afin d'obtenir
users:x:100:sandrine,lea,jean-pierre,maintenance


Dans le genre
#!/bin/bash
cp -v /etc/group /etc/group.bak
usersh=$(awk -F":" '/x:50/ { print $1 }' /etc/group)
//......
//Mais comment lui dire de les ajouter a la fin de la ligne ${usersh}
//------

comment dois je faire ?
Merci.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
6 sept. 2012 à 13:25
Salut,

#!/bin/bash

usersh=$(awk -F":" '/x:50/ { print $1 }' /etc/group) 

liste=$(eval echo ${usersh})
sed -i.bak '/^users/{s/$/'"${liste// /,}"'/}' /etc/group
0