Script bash connaitre tout les utilisateurs

Résolu
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
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.

A voir également:

5 réponses

laoshu Messages postés 1231 Date d'inscription   Statut Membre Dernière intervention   351
 
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 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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 995 Date d'inscription   Statut Membre Dernière intervention   190
 
Première ligne :
utilisateurs=('cat /etc/group | fgrep 50 | cut -d: -f1')
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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 995 Date d'inscription   Statut Membre Dernière intervention   190
 
ça m'apprendra à ne pas réfléchir, merci d'avoir rectifié. :p
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

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

0
Utilisateur anonyme
 
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   Statut Contributeur Dernière intervention   6 430
 
Salut,

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

Merci.
0
xunil2003 Messages postés 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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   Statut Contributeur Dernière intervention   6 430
 
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 765 Date d'inscription   Statut Membre Dernière intervention   14
 
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   Statut Contributeur Dernière intervention   6 430
 
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