Einführung
In dieser Herausforderung erstellen Sie ein Bash-Skript namens userctr.sh, um die Stapeladdition und -löschung von Benutzern auf einem Server zu automatisieren. Sie schreiben ein Skript, das Kommandozeilenargumente akzeptiert, um die Operation (add oder del), einen Benutzernamen eines Lehrers, ein Präfix für Benutzernamen von Studenten und die Anzahl der zu verwaltenden Studenten anzugeben. Diese Aufgabe wird Ihre Fähigkeiten in Shell-Skripting, Benutzerverwaltung und Automatisierung verbessern, die für die Systemadministration entscheidend sind.
Batch-Erstellung und -Löschung von Benutzern und Gruppen
Ein Systemadministrator benötigt eine Möglichkeit, Lehrer und mehrere Studentenbenutzer effizient auf Klassenzimmer-Servern hinzuzufügen. Das manuelle Erstellen jedes Kontos ist mühsam und fehleranfällig. Ihre Aufgabe ist es, ein Bash-Skript namens userctr.sh zu erstellen, um diesen Prozess zu automatisieren. Das Skript nimmt den Operationstyp, den Namen des Lehrers, das Präfix des Studentennamens und die Anzahl der Studenten als Parameter entgegen.
Aufgaben
- Erstellen Sie ein Bash-Skript namens
userctr.shim Verzeichnis/home/labex/project. - Das Skript muss zwei Hauptoperationen implementieren:
addunddel, die durch das erste Kommandozeilenargument bestimmt werden. - Für die
add-Operation erstellen Sie einen Lehrerbenutzer und eine angegebene Anzahl von Studentenbenutzern. - Für die
del-Operation löschen Sie die angegebenen Lehrer- und Studentenbenutzer. - Das Skript muss alle Eingabeparameter gemäß den untenstehenden Anforderungen validieren.
Anforderungen
Ausführungsformat: Das Skript muss mit vier Argumenten ausführbar sein:
sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>Parametervalidierung:
- Das Skript muss genau vier Argumente erhalten. Andernfalls sollte es
parameter errorausgeben und beenden. - Der
student_count(viertes Argument) muss eine Ganzzahl zwischen 1 und 10 (einschließlich) sein. Andernfalls geben Sieparameter erroraus und beenden Sie das Skript. - Das
student_prefix(drittes Argument) darf nur Kleinbuchstaben enthalten. Andernfalls geben Sieparameter erroraus und beenden Sie das Skript.
- Das Skript muss genau vier Argumente erhalten. Andernfalls sollte es
add-Operationsdetails:- Wenn ein hinzuzufügender Benutzer bereits existiert, versuchen Sie nicht, ihn zu erstellen. Geben Sie stattdessen seinen Benutzernamen gefolgt von
******aus (z. B.stu3:******). - Generieren Sie für neue Benutzer ein zufälliges 6-stelliges numerisches Passwort.
- Geben Sie den Benutzernamen und sein Passwort für jeden neu erstellten Benutzer aus, getrennt durch einen Doppelpunkt (z. B.
teacher:901231). - Alle erstellten Benutzer müssen
/bin/zshals ihre Standard-Shell verwenden. - Der Lehrerbenutzer muss zur Gruppe
sudohinzugefügt werden, um administrative Berechtigungen zu gewähren.
- Wenn ein hinzuzufügender Benutzer bereits existiert, versuchen Sie nicht, ihn zu erstellen. Geben Sie stattdessen seinen Benutzernamen gefolgt von
del-Operationsdetails:- Das Skript sollte die angegebenen Lehrer- und Studentenbenutzer einschließlich ihrer Home-Verzeichnisse löschen.
- Die
del-Operation sollte keine Ausgabe erzeugen. - Wenn ein zu löschender Benutzer nicht existiert, sollte das Skript keinen Fehler melden und mit dem Löschen der anderen vorhandenen Benutzer fortfahren.
Beispiel
Die folgenden Beispiele zeigen das erwartete Verhalten Ihres Skripts.
Benutzer hinzufügen: Dieser Befehl fügt einen Lehrer (
teacher) und sechs Studenten (stu1bisstu6) hinzu.sh userctr.sh add teacher stu 6Beispielausgabe:
teacher:901231 stu1:271828 stu2:928172 stu3:****** stu4:384712 stu5:098273 stu6:921098In dieser Ausgabe zeigen die Sternchen für
stu3an, dass der Benutzer bereits existierte, sodass kein neues Passwort generiert wurde.Benutzer löschen: Dieser Befehl löscht denselben Satz von Benutzern. Er sollte bei erfolgreicher Ausführung keine Ausgabe erzeugen.
sh userctr.sh del teacher stu 6
Hinweise
- Verwenden Sie
sudovor Befehlen, die Root-Berechtigungen erfordern, wieuseraddunduserdel. - Überprüfen Sie die Anzahl der Argumente mit
$#. - Greifen Sie auf Argumente mit
$1,$2usw. zu. - Um zu überprüfen, ob ein Benutzer existiert, können Sie
id -u <username>verwenden. Der Befehl hat einen Exit-Code ungleich Null, wenn der Benutzer nicht existiert. - Verwenden Sie
useradd -m -s /bin/zsh <username>, um einen Benutzer mit einem Home-Verzeichnis zu erstellen und die Zsh-Shell festzulegen. - Verwenden Sie
usermod -aG sudo <username>, um einen Benutzer zur Gruppesudohinzuzufügen. - Verwenden Sie
userdel -r <username>, um einen Benutzer und sein Home-Verzeichnis zu löschen. - Um eine zufällige 6-stellige Zahl zu generieren, können Sie
shuf -i 100000-999999 -n 1verwenden. - Eine
for-Schleife ist nützlich, um durch die Anzahl der Studenten zu iterieren:for ((i=1; i<=$student_count; i++)). - Verwenden Sie
if [[ "$string" =~ "regex" ]]für Mustervergleiche zur Validierung von Parametern.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben erfolgreich ein Bash-Skript zur Automatisierung der Benutzerverwaltung erstellt. Dieses Skript kann Benutzer in Stapeln hinzufügen und löschen, Eingabeparameter validieren und mit vorhandenen Benutzern umgehen, was für jeden Systemadministrator unerlässlich ist. Sie haben die Verwendung von bedingten Anweisungen, Schleifen, Kommandozeilenargumenten und externen Befehlen wie useradd und userdel innerhalb eines Skripts geübt.



