Пакетное создание и удаление пользователей и групп

LinuxBeginner
Практиковаться сейчас

Введение

В этом задании вы создадите bash-скрипт с именем userctr.sh для автоматизации пакетного добавления и удаления пользователей на сервере. Вы напишете скрипт, который принимает аргументы командной строки для указания операции (add или del), имени пользователя преподавателя, префикса для имен пользователей студентов и количества управляемых студентов. Эта задача улучшит ваши навыки в написании shell-скриптов, управлении пользователями и автоматизации, которые имеют решающее значение для системного администрирования.

Пакетное создание и удаление пользователей и групп

Системному администратору нужен способ эффективно добавлять преподавателя и нескольких студентов на серверы учебных классов. Ручное создание каждой учетной записи утомительно и чревато ошибками. Ваша задача — создать bash-скрипт userctr.sh для автоматизации этого процесса. Скрипт будет принимать тип операции, имя преподавателя, префикс имени студента и количество студентов в качестве параметров.

Задачи

  • Создайте Bash-скрипт с именем userctr.sh в каталоге /home/labex/project.
  • Скрипт должен реализовывать две основные операции: add (добавить) и del (удалить), определяемые первым аргументом командной строки.
  • Для операции add создайте пользователя преподавателя и указанное количество пользователей студентов.
  • Для операции del удалите указанных пользователей преподавателя и студентов.
  • Скрипт должен проверять все входные параметры в соответствии с приведенными ниже требованиями.

Требования

  • Формат выполнения: Скрипт должен запускаться с четырьмя аргументами:

    sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>
  • Проверка параметров:

    • Скрипт должен получать ровно четыре аргумента. В противном случае он должен вывести parameter error и завершиться.
    • student_count (четвертый аргумент) должен быть целым числом от 1 до 10 включительно. В противном случае выведите parameter error и завершите работу.
    • student_prefix (третий аргумент) должен состоять только из строчных букв. В противном случае выведите parameter error и завершите работу.
  • Детали операции add:

    • Если пользователь, которого нужно добавить, уже существует, не пытайтесь его создать. Вместо этого выведите его имя пользователя, за которым следует ****** (например, stu3:******).
    • Для новых пользователей сгенерируйте случайный 6-значный числовой пароль.
    • Выведите имя пользователя и его пароль для каждого вновь созданного пользователя, разделенные двоеточием (например, teacher:901231).
    • Все созданные пользователи должны использовать /bin/zsh в качестве своей оболочки по умолчанию.
    • Пользователь преподавателя должен быть добавлен в группу sudo для предоставления административных привилегий.
  • Детали операции del:

    • Скрипт должен удалять указанных пользователей преподавателя и студентов, включая их домашние каталоги.
    • Операция del не должна выдавать никакого вывода.
    • Если пользователя, которого нужно удалить, не существует, скрипт не должен сообщать об ошибке и должен продолжить удаление других существующих пользователей.

Пример

Следующие примеры демонстрируют ожидаемое поведение вашего скрипта.

  • Добавление пользователей: Эта команда добавляет одного преподавателя (teacher) и шесть студентов (stu1 по stu6).

    sh userctr.sh add teacher stu 6
  • Пример вывода:

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

    В этом выводе звездочки для stu3 указывают на то, что пользователь уже существовал, поэтому новый пароль не был сгенерирован.

  • Удаление пользователей: Эта команда удаляет тот же набор пользователей. При успешном завершении она не должна выдавать никакого вывода.

    sh userctr.sh del teacher stu 6

Подсказки

  • Используйте sudo перед командами, требующими прав root, такими как useradd и userdel.
  • Проверьте количество аргументов с помощью $#.
  • Доступ к аргументам осуществляется с помощью $1, $2 и т.д.
  • Чтобы проверить, существует ли пользователь, вы можете использовать id -u <username>. Команда вернет ненулевой код выхода, если пользователь не существует.
  • Используйте useradd -m -s /bin/zsh <username> для создания пользователя с домашним каталогом и установки оболочки Zsh.
  • Используйте usermod -aG sudo <username> для добавления пользователя в группу sudo.
  • Используйте userdel -r <username> для удаления пользователя и его домашнего каталога.
  • Для генерации случайного 6-значного числа можно использовать shuf -i 100000-999999 -n 1.
  • Цикл for полезен для итерации по количеству студентов: for ((i=1; i<=$student_count; i++)).
  • Используйте if [[ "$string" =~ "regex" ]] для сопоставления с образцом при проверке параметров.
✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы успешно создали bash-скрипт для автоматизации управления пользователями. Этот скрипт может пакетно добавлять и удалять пользователей, проверять входные параметры и обрабатывать существующие пользователей, что является важным навыком для любого системного администратора. Вы отработали использование условных операторов, циклов, аргументов командной строки и внешних команд, таких как useradd и userdel, в скрипте.