Zum Inhalt springen

Skript -- Problem bei der Ausgabe


Empfohlene Beiträge

Geschrieben

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 grouptest

Den 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

Geschrieben

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

Geschrieben

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

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...