hi,
ich hab gestern an was ähnlichem gebastelt, allerdings benutzt die lösung eine csv datei zum einlesen der daten. die ist in diesem fall so aufgebaut:
Code: Alles auswählen
name,vorname,gruppe,password
baumann,frank,schueler,telekoma
degowskie,dieter,patient,geheim
das script legt zusätzlich zu deinen anforderungen noch eine gruppe an bzw. fügt den user einer gruppe zu. es setzt den usernamen aus vor und nachnamen zusammen. zusätzlich kann es die user auch wieder entfernen. die passwortübergabe (wie das ganze script) ist sicher nicht optimal (zum passwort:
http://debianforum.de/forum/viewtopic.php?f=34&t=115896 ). also ich poste das mal hierein - zum auseinander basteln hab ich gerade keine zeit. vielleicht kannst du etwas damit anfangen. es ist einiger "ballast" enthalten, den du durchaus weglassen kannst.
Code: Alles auswählen
#!/bin/bash
# User erstellen/entfernen mit Hilfe einer CSV-Datei
# parameter überprüfen
if [ $# -lt 2 ]
then
echo "Benutzung: $0 <csv-datei> <c> (create) <d> (delete)"
exit 1
fi
echo $2 | grep "^[cd]$"
if [ $? -eq 1 ]
then
echo "Benutze 'c' fürs anlegen oder 'd' zum löschen von Benutzern"
exit 1
fi
# variablen anlegen
csvdatei=$1
typeset -i anzahl=`cat $csvdatei | wc -l`
anzahl=$anzahl-1
typeset -i zaehler=0
# user werden eingetragen
if [ $2 = c ]
then
clear
echo "Es werden vorraussichtlich $anzahl Benutzer angelegt"
for line in `cat $csvdatei`
do
if [ $zaehler -eq 0 ]
then
# wir sind in der ersten zeile
zaehler=1
continue
fi
name=`echo $line | cut -d, -f1`
vorname=`echo $line | cut -d, -f2`
# username aus jeweils ersten 3 buchstaben von vor/nachname
temp1=`echo $vorname | cut -c 1-3`
temp2=`echo $name | cut -c 1-3`
username=$temp1$temp2
gruppe=`echo $line | cut -d, -f3`
password=`echo $line | cut -d, -f4`
# gibt es die gruppe bereits?
grep $gruppe /etc/group >> /dev/null
if [ $? -eq 1 ]
then
# wenn es die gruppe nicht gibt
addgroup $gruppe >> create.log 2>&1
fi
# user anlegen
useradd -m $username -g $gruppe --skel /etc/skel >> create.log 2>&1
if [ $? -eq 0 ]
then
# wenn der benutzer fehlerfrei erstellt wurde wird hochgezählt
zaehler=$zaehler+1
fi
# passwort erstellen
echo "$username:$password" | chpasswd >> create.log 2>&1
# user muss passwort bei erstanmeldung ändern
passwd -e $username >> create.log 2>&1
# test
# echo $username
done
# einmal zurück zählen wegen erster zeile in csv datei
zaehler=$zaehler-1
echo "Es wurden $zaehler Benutzer neu eingetragen."
elif [ $2 = d ]
then
clear
echo "Es werden vorraussichtlich $anzahl Benutzer entfernt"
typeset -i zaehler=0
for line in `cat $csvdatei`
do
if [ $zaehler -eq 0 ]
then
# wir sind in der ersten zeile
zaehler=1
continue
fi
name=`echo $line | cut -d, -f1`
vorname=`echo $line | cut -d, -f2`
# username aus jeweils ersten 3 buchstaben von vor/nachname
temp1=`echo $vorname | cut -c 1-3`
temp2=`echo $name | cut -c 1-3`
username=$temp1$temp2
# echo $username
# user inklusive home verzeichnis eliminieren
deluser $username --remove-home >> del.log 2>&1
if [ $? -eq 0 ]
then
# nur wenn fehlerrückage == 0 ist auch ein benutzer entfernt
zaehler=$zaehler+1
fi
done
zaehler=$zaehler-1
echo "Es wurden $zaehler Benutzer entfernt"
fi
echo; echo
read -p "Bye!" g
clear