Benutzerverwaltung

InFlames76

Lt. Junior Grade
Registriert
Apr. 2005
Beiträge
432
Hallo!
Ich bin neu in Sachen Linux und probier gerad herum.
Momentan versuche ich aus einer Liste mit Benutzernamen und den jeweils danebenstehenden Gruppen, Benutzer und halt eben die dazugehörenden Gruppen anzulegen.
So sieht das ganze bisher aus:

Code:
#!/bin/bash

ort=/home/rami/Benutzerverwaltung/mitarbeiter
z=2000
y=1500
personal=`cat $ort | cut -f1 `
gruppe=`cat $ort | cut -d- -f2 | sort -d | uniq`

for i in $gruppe
do
        groupadd -f -g $z $i
        z=$[ z + 1 ]

                for j in $personal
                do
                useradd -m -u $y -g $i $j
                y=$[ y + 1 ]
                done
done


#echo "Es werden folgende Benutzer angelegt:
#$personal"
#echo "Es werden folgende Gruppen angelegt:
#$gruppe"

Das funktioniert soweit. Nur leider sind alle angelegten Benutzer jetzt Mitglied in jeder Gruppe. Nur leider komm ich nich drauf, was ich ändern muss, damit jeder seiner vorgesehenen Gruppe zugefügt wird. Wäre cool, wenn mir jemand auf die Sprünge helfen könnte.

Grüße
 
Durch die verschachtelte Schleifen wird für jede Gruppe, jeder Benutzer angelegt.
Die Zuordnung, welcher Benutzer in welcher Gruppe ist, ist bei dir direkt nach dem Zerteilen der Datei nicht mehr gegeben.

Man müsste versuchen die Datei Zeilenweise abzuarbeiten. Auf die schnell kann ich dir jedoch auch nichts konkretes präsentieren.

Mal schauen ob ich übers Wochenende mal Zeit finde...
 
Hallo!
Danke für die Hilfe! Ich werd heute oder morgen mal ausprobieren, ob es hilft, wenn ich die Schleifen voneinander trenne.
Grüße
 
Mittlerweile bin ich soweit:

Code:
#!/bin/bash

ort=/home/rami/Benutzerverwaltung/mitarbeiter
z=2000

gruppe=`cat $ort | cut -d- -f2 | sort -d | uniq`

for i in $gruppe
do
        groupadd -g $z $i
        z=$[ z + 1 ]


done

y=1500
#personal=`cat $ort | cut -f1 | tr -d "\t"`
#gruppe1=`cat $ort | cut -d- -f2`

for j in `cat $ort | cut -d- -f1 | tr -d "\t"`
do
        useradd -m -g `cat $ort | cut -d- -f2` -u $y $j
        y=$[ y + 1 ]
done

Allerdings hab ich jetzt das Problem daß folgende Fehlermeldung erscheint:

Useradd: Zu viele Argumente.

Darf man nur eine bestimmte Menge an Optionen verwenden? Die Tabs hab ich ja aus der Liste rausgelöscht. Hab auch die Variablen mit direkten cat Befehlen ersetzt, wie man sehen kann. Hilft aber alles nix. Weiß jemand Rat?

Danke
 
Morgen,

ich kam endlich mal dazu und so hab ich es gemacht:

Die Mitarbeiter Datei sieht wie folgt aus:
u1 g1
u2 g2
u3 g3
u4 g2
u5 g2
u6 g1

Code:
#!/bin/sh

datei=~/Mitarbeiter

gruppe=`cat $datei | cut -d" " -f2 | sort -d | uniq`
for i in $gruppe
do
  groupadd $i
done

cat $datei | while read line; do
  user=$(echo $line | cut -d" " -f1)
  group=$(echo $line | cut -d" " -f2)
  useradd -m -g $group $user
done

Gruß Midi
 
Zuletzt bearbeitet:
Moin!

Super! Vielen Dank für Deine Mühe!
Ich werds gleich heut Abend ausprobieren.

Danke nochmal!

Grüße
 
Zurück
Oben