Введение
В этом задании вы создадите 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, в скрипте.



