Mounji Posted June 2, 2008 Share Posted June 2, 2008 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 Link to comment Share on other sites More sharing options...
Compte_supprime_74291 Posted June 2, 2008 Share Posted June 2, 2008 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 Link to comment Share on other sites More sharing options...
theocrite Posted June 2, 2008 Share Posted June 2, 2008 Pourquoi pas groupdel tongoupe # supprime ton groupe et donc toutes la associations avec les utilisateurs groupadd tongroupe Link to comment Share on other sites More sharing options...
Sandeman Posted June 2, 2008 Share Posted June 2, 2008 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 Link to comment Share on other sites More sharing options...
Compte_supprime_74291 Posted June 2, 2008 Share Posted June 2, 2008 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)... Link to comment Share on other sites More sharing options...
theocrite Posted June 2, 2008 Share Posted June 2, 2008 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 ? Link to comment Share on other sites More sharing options...
djuke Posted June 2, 2008 Share Posted June 2, 2008 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 Link to comment Share on other sites More sharing options...
Mounji Posted June 14, 2008 Author Share Posted June 14, 2008 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 Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.