Liste alle user in einer Gruppe

C

CptRick

Mitglied
hiho,

ich versuche mir ein skript zu schreiben, dass für jeden user in der Gruppe "guests" ein Kommando ausführt.
Das Auslesen der Zeile in /etc/group bekomm ich noch hin, aber bei dem Listen der Usernamen in ein array per sed, grep oder awk hören meine bash Kenntnisse auf.
 
Hallo

aber bei dem Listen der Usernamen in ein array per sed, grep oder awk hören meine bash Kenntnisse auf.

Aber warum so umständlich?
Das kannst du doch direkt an dein command verfüttern.

Code:
grep "pattern" input|while read U;
do 
   command "$U"
done

Andererseits ist die Verwendung von Array sehr abhängig von der verwendeten Shell.

In der bash:
Code:
MYARRAY=( $(command))

Gruß Wolfgang
 
Mit
Code:
grep ^guests /etc/group|cut -d: -f4|tr , ' '
solltest du eine durch Leerzeichen getrennte Auflistung der user in der Gruppe guests erhalten. Diese kannst du entweder direkt in einer for-Schleife verwenden oder auch in ein array packen.
Das "^" bei grep meint nur "am Anfang der Zeile", cut zeigt nur das vierte Feld an (wobei Felder durch ":" getrennt sind) und tr "übersetzt" Kommata in Leerzeichen.
Mit
Code:
... | tr , '\n'
könntest du auch gleich in eine while(-read) Schleife pipen. (Siehe Wolfgangs Vorschlag.)
 
Danke!

Ich habe es jetzt so gelöst:
Code:
array=($(grep ^guests /etc/group | cut -d: -f4 | tr , ' '))

for USER in ${array[*]}
do

           mount --bind /mnt/media/audio /home/chroot/ssh/home/$USER/audio
           mount --bind /mnt/media/video /home/chroot/ssh/home/$USER/video
           mount --bind /mnt/media/image /home/chroot/ssh/home/$USER/image

done
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Skript zum Start unter anderem User

Windows clients können nicht mehr auf lange laufendes System zugreifen

Autostart von X mit google-chrome durch systemd

Zurück
Oben