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
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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden