Posted June 2, 200817 yr Bonjour a vous, Je cherche a realiser un script me permettant de supprimer les utilisateurs d'un groupe. Je sais qu'il faudrait lister tous les utilisateurs du groupe (grep /etc/group?). Les compter (-wc) Et les supprimer (deluser) Cependant je n'arrive pas à mettre ces 3 parties ensemble.... J'ai donc besoin d'une aide Merci @bientot
June 2, 200817 yr Il y a sûrement plus élégant, mais en faisant à-la-rache (et en adaptant à ton cas là où j'ai mis des commentaires) : #!/bin/bash GROUP_NAME=floppy # Remplace par le nom du groupe qui t'intéresse USERS_LIST=`cat /etc/group|grep "$GROUP_NAME:"|cut -d: -f4` if [ -n $USERS_LIST ] then COMPTEUR=$((`echo $USERS_LIST|tr -cd ,|wc -c`+1)) if (($COMPTEUR>1)) then for ((i=1;i<=$COMPTEUR;i+=1)) do USER_TO_DEL=`echo $USERS_LIST|cut -d, -f$i` echo $USER_TO_DEL # Remplace par l'instruction qui efface l'utilisateur done else USER_TO_DEL=$USERS_LIST echo $USER_TO_DEL # Remplace par l'instruction qui efface l'utilisateur fi fi Edit 1 : en y pensant, en fait, ça ne marchera que s'il y a plus d'un utilisateur dans le groupe (je compte les virgules)... Edit 2 : adapté pour marcher, même s'il n'y a qu'un utilisateur dans le groupe Edited June 2, 200817 yr by Aefron
June 2, 200817 yr Pourquoi pas groupdel tongoupe # supprime ton groupe et donc toutes la associations avec les utilisateurs groupadd tongroupe
June 2, 200817 yr Juste en passant, l'étape de comptage n'est pas indispensable, sauf si elle t'est imposée par l'énoncé (sinon, ça se comprend que tu la pense utile, en te référant à tes habitudes de dev) GROUP=scanner LIST=`grep $GROUP /etc/group | cut -d":" -f4 | tr "," " "` for USER in $LIST; do echo userdel $USER done
June 2, 200817 yr Sinon, au coup par coup, encore bien plus simple, avec sed : #!/bin/bash GROUP_NAME=floppy # Remplace par le nom du groupe qui t'intéresse USERS_LIST=`cat /etc/group|grep "$GROUP_NAME:"|cut -d: -f4|sed -e 's/,/ /g'` for USER_TO_DEL in $USERS_LIST do echo $USER_TO_DEL # Remplace par l'instruction qui efface l'utilisateur done Edit : Arf, grilled sur le principe... j'ai bêtement fait avec le comptage, vu qu'on parlait de wc (enfin, ça fait une version avec sed)... Edited June 2, 200817 yr by Aefron
June 2, 200817 yr Heu... Il faut supprimer du système les utilisateurs qui ont la propriété d'appartenir à un groupe ou juste supprimer leur appartenance à un groupe ?
June 2, 200817 yr Attention, quand il s'agit du groupe principal de l'utilisateur, celui-ci n'apparait pas dans forcément le /etc/group, il faut aussi chercher dans le /etc/passwd!! Et je ne parle pas de NIS je propose (non testé): #!/bin/bash group=groupe_a_vider typeset -i i for user in $(cut -d : -f 1 /etc/passwd) do if groups $user | grep -w $group >&- then echo "Deleting user $user" userdel $user i=$i+1 fi done echo "group $group had $i members on this host" EDIT: gestion du nombre de users locaux du groupe. NB: ce script ne gère pas les utilisateurs NIS, mais détecte bien l'appartenance à un groupe NIS Edited June 2, 200817 yr by djuke
June 14, 200817 yr Author Bon, désolé pour l'absence, mais les alertes pci n'ont pas marchées...... Donc, merci a tous pour votre aide, j'en ai appris pas mal grâce a vous. Je constate aussi que le bash présente un mode de réfléxion différent en comparaison au langages que j'ai l'habitude de pratiquer? Merci encore @bientot
Archived
This topic is now archived and is closed to further replies.