geist_der_foren Geschrieben 24. Februar 2004 Geschrieben 24. Februar 2004 Hi @all, ich hab folgendes kleine Skript:GROUP_PFAD=/etc/group i=700 for USER in `awk -F: '{print $1}' /etc/passwd` do GROUP=`grep $USER $GROUP_PFAD | awk -F: '$3>=100 {print $1}'` echo "groupadd -g $i $GROUP" i=`expr $i + 1` done Wie man sehen kann, holt sich das Skript die user aus der /etc/passwd und gibt mir dann die grouppen aus, in denen sich einer mindest einer dieser user befindet. Dann generiert er mir ein groupadd befehl. Jetzt habe ich 2 Probleme. 1. Er gibt mir ein paar Gruppen aus, in denen keine User sind (siehe unten) 2. Es kommt folgende ausgabe:groupadd -g 700 groupadd -g 701 groupadd -g 702 groupadd -g 703 groupadd -g 704 groupadd -g 705 groupadd -g 706 groupadd -g 707 groupadd -g 708 groupadd -g 709 groupadd -g 710 groupadd -g 711 groupadd -g 712 groupadd -g 713 nobody ---> Hier sind keine USER drin nogroup ------------------------> Warum bring er das auch raus ? groupadd -g 714 groupadd -g 715 groupadd -g 716 groupadd -g 717 groupadd -g 718 groupadd -g 719 radiusd ---> Hier sind keine USER drin groupadd -g 720 groupadd -g 721 privoxy ---> Hier sind keine USER drin groupadd -g 722 groupadd -g 723 groupadd -g 724 grouptest An sich sollte er mir nur folgendes ausgeben:groupadd -g 700 grouptestDen grouptest ist die einzigste gruppe die einen User auf der passwd hat und deren gID größer 100 ist. Kann mir jemand weiter helfen ? Blick das nicht so ganz Zitieren
Nachtgeist Geschrieben 25. Februar 2004 Geschrieben 25. Februar 2004 Hi! Dein Problem ist, dass der Username auch im gruppennamen vorkommen kann. (Denke ich - hab mich da jetzt nciht so reingesteigert ) Original geschrieben von geist_der_foren GROUP=`grep $USER $GROUP_PFAD | awk -F: '$3>=100 {print $1}'` ersetze mal das grep $USER durch: egrep '[:,]'$USER HTH Zitieren
geist_der_foren Geschrieben 25. Februar 2004 Autor Geschrieben 25. Februar 2004 Danke ... du hast mich auf die Idee gebracht hier ist der code, falls es mal jemand braucht:#!/bin/bash GROUP_PFAD=/etc/group i=700 for USER in `awk -F: '{print $1}' /etc/passwd` do for USERB in `grep :$USER $GROUP_PFAD` do GROUP=`echo $USERB | awk -F: '$3>=100 {print $1}'` GROUP_USER=`echo $USERB | awk -F: '$3>=100 {print $4}' | sed 's/,/ /g'` if [[ $GROUP && $GROUP_USER ]] then echo "groupadd -g $i $GROUP" echo "gpasswd -a $GROUP_USER" i=`expr $i + 1` fi done done Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.