Batch-Erstellung und -Löschung von Benutzern und Gruppen

LinuxBeginner
Jetzt üben

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.sh im Verzeichnis /home/labex/project.
  • Das Skript muss zwei Hauptoperationen implementieren: add und del, 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 error ausgeben und beenden.
    • Der student_count (viertes Argument) muss eine Ganzzahl zwischen 1 und 10 (einschließlich) sein. Andernfalls geben Sie parameter error aus und beenden Sie das Skript.
    • Das student_prefix (drittes Argument) darf nur Kleinbuchstaben enthalten. Andernfalls geben Sie parameter error aus und beenden Sie das Skript.
  • 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/zsh als ihre Standard-Shell verwenden.
    • Der Lehrerbenutzer muss zur Gruppe sudo hinzugefügt werden, um administrative Berechtigungen zu gewähren.
  • 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 (stu1 bis stu6) hinzu.

    sh userctr.sh add teacher stu 6
  • Beispielausgabe:

    teacher:901231
    stu1:271828
    stu2:928172
    stu3:******
    stu4:384712
    stu5:098273
    stu6:921098

    In dieser Ausgabe zeigen die Sternchen für stu3 an, 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 sudo vor Befehlen, die Root-Berechtigungen erfordern, wie useradd und userdel.
  • Überprüfen Sie die Anzahl der Argumente mit $#.
  • Greifen Sie auf Argumente mit $1, $2 usw. 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 Gruppe sudo hinzuzufü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 1 verwenden.
  • 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.
✨ Lösung prüfen und üben

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.