Ete2022
23.05.11, 12:29
Moin Moin!
Zunächst müsst ihr wissen, dass ich ein Anfänger in der Skriptprogrammierung bin: Folgende Aufgabe habe ich mir dennoch zur Übung überlegt:
Das Skript soll folgendes machen:
- Prüfen ob es den User bereits gibt?
- Selbständig eine UserId zuweisen
- Falls ein Referenzuser bekannt ist, soll er die GroupID automatisch zuweisen, die der Referenzuser auch hat.
- Das PW des Users auf 12345 setzen
- Wenn der User angelegt worden ist, soll eine automatisierte Email mit dem PW an den User gesendet werden.
Die ersten beide Punkte konnte ich bereits lösen. Aber jetzt stehe ich auf dem Schlauch. Wäre suuper wenn mir jemand helfen könnte. Auch Verbesserungsvorschläge nehme ich an. Anbei mein Code.
#!/bin/bash
ANSWER=n
USERFOUND=0
clear
#Eingabe des Benutzerkürzels
echo -n "Bitte geben Sie das Kürzel des Benutzers ein: "
read EXPECTEDUSER
#Liste der aktuellen User
CURRENTUSERNAME=`awk -F ":" '{print $1}' /etc/passwd > Userlist.txt`
#CURRENTUSERNAME1=`awk -F ":" '{print $1}' /etc/passwd`
# Festlegung der nächsten UserID
CURRENTUSERID=$(getent passwd | cut -f3 -d: | sort -un | awk 'BEGIN { id=1000 } $1 == id { id++ } $1 > id { print id; exit }')
grep -q "$EXPECTEDUSER" Userlist.txt
#echo "$CURRENTUSERNAME1" | grep -q "$EXPECTEDUSER"
#awk -F ":" '{print $1}' /etc/passwd | grep -q "$EXPECTEDUSER"
if [ $? -eq 0 ] ;then
echo " Der User ist bereits vorhanden "
USERFOUND=1
sleep 1
exit 0
else
echo -n " Der User ist nicht vorhanden. Wollen Sie einen neuen Benutzer anlegen?(y/n)"
read ANSWER
fi
case $ANSWER in
y)
echo -n "Tragen Sie hier falls vorhanden das Kürzel eines Referenzusers ein: "
read REFERENZUSER
if [$REFERENZUSER=" "]; then
echo -n "Bitte geben Sie die Group ID ein: "
else read USERGROUP
echo -n "Bitte geben Sie den vollständigen Namen ein: "
read USERNAME
fi
useradd -u $CURRENTUSERID -g $USERGROUP -c "$USERNAME" -d /home/$EXPECTEDUSER -m -s /bin/bash $EXPECTEDUSER
passwd $EXPECTEDUSER
echo " Der Benuter $USERNAME wurde angelegt.."
sleep 1
;;
n) echo " Das Programm wird beendet"
sleep 1
exit 0
;;
*) echo " Falsche Eingabe "
sleep 1
exit 0
;;
esac
Zunächst müsst ihr wissen, dass ich ein Anfänger in der Skriptprogrammierung bin: Folgende Aufgabe habe ich mir dennoch zur Übung überlegt:
Das Skript soll folgendes machen:
- Prüfen ob es den User bereits gibt?
- Selbständig eine UserId zuweisen
- Falls ein Referenzuser bekannt ist, soll er die GroupID automatisch zuweisen, die der Referenzuser auch hat.
- Das PW des Users auf 12345 setzen
- Wenn der User angelegt worden ist, soll eine automatisierte Email mit dem PW an den User gesendet werden.
Die ersten beide Punkte konnte ich bereits lösen. Aber jetzt stehe ich auf dem Schlauch. Wäre suuper wenn mir jemand helfen könnte. Auch Verbesserungsvorschläge nehme ich an. Anbei mein Code.
#!/bin/bash
ANSWER=n
USERFOUND=0
clear
#Eingabe des Benutzerkürzels
echo -n "Bitte geben Sie das Kürzel des Benutzers ein: "
read EXPECTEDUSER
#Liste der aktuellen User
CURRENTUSERNAME=`awk -F ":" '{print $1}' /etc/passwd > Userlist.txt`
#CURRENTUSERNAME1=`awk -F ":" '{print $1}' /etc/passwd`
# Festlegung der nächsten UserID
CURRENTUSERID=$(getent passwd | cut -f3 -d: | sort -un | awk 'BEGIN { id=1000 } $1 == id { id++ } $1 > id { print id; exit }')
grep -q "$EXPECTEDUSER" Userlist.txt
#echo "$CURRENTUSERNAME1" | grep -q "$EXPECTEDUSER"
#awk -F ":" '{print $1}' /etc/passwd | grep -q "$EXPECTEDUSER"
if [ $? -eq 0 ] ;then
echo " Der User ist bereits vorhanden "
USERFOUND=1
sleep 1
exit 0
else
echo -n " Der User ist nicht vorhanden. Wollen Sie einen neuen Benutzer anlegen?(y/n)"
read ANSWER
fi
case $ANSWER in
y)
echo -n "Tragen Sie hier falls vorhanden das Kürzel eines Referenzusers ein: "
read REFERENZUSER
if [$REFERENZUSER=" "]; then
echo -n "Bitte geben Sie die Group ID ein: "
else read USERGROUP
echo -n "Bitte geben Sie den vollständigen Namen ein: "
read USERNAME
fi
useradd -u $CURRENTUSERID -g $USERGROUP -c "$USERNAME" -d /home/$EXPECTEDUSER -m -s /bin/bash $EXPECTEDUSER
passwd $EXPECTEDUSER
echo " Der Benuter $USERNAME wurde angelegt.."
sleep 1
;;
n) echo " Das Programm wird beendet"
sleep 1
exit 0
;;
*) echo " Falsche Eingabe "
sleep 1
exit 0
;;
esac