Linux, Users, Script · 10 min read · Dec 15, 2025
Как добавить пользователей в Linux OS из текстового файла
Как добавить пользователей в Linux OS из текстового файла
Этот учебник посвящен bash-скрипту для добавления, удаления и проверки пользователей из текстового файла; он также может добавлять, удалять и изменять пользователей вручную. Этот скрипт можно использовать для добавления, удаления и проверки пользователей в Linux OS, извлекая информацию о пользователе из любого текстового файла, и этот скрипт также может добавлять, удалять или проверять пользователей вручную, я объединил обе эти функции в одном скрипте. Текстовый файл может быть указан администратором.
:-) !!!Скрипт полностью удобен для пользователя!!! :-)
Вы можете найти скрипт в конце этого учебника.
Запуск скрипта
Когда вы запускаете скрипт, появится меню, похожее на это:
МЕНЮ
ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ
Проверить пользователей
Удалить пользователей
4. ВЫХОД1. Добавить пользователей
Теперь выберите опцию
1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ
из меню, нажав
“1”
на клавиатуре.
Теперь скрипт подтверждает, что пользователь должен быть root, и мы знаем, что UID root равен нулю (0). Поэтому сначала я сравниваю UID текущего пользователя с нулем (0), если UID не совпадает с UID root, то будет отображено следующее сообщение:
**Вы должны быть пользователем root, чтобы запустить этот скрипт!и если UID
совпадает с UID root, то отображается следующее сообщение и запускается скрипт:
*Личность подтверждена_Вы - Root*
Мы можем проверить UID текущего пользователя, введя следующую команду в терминале:
echo $UIDЕсли пользователь является root, то функция 1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ будет выполнена.
Теперь скрипт спросит пользователя, хочет ли он добавить пользователей вручную или позволить скрипту получить информацию о пользователе из текстового файла. Для этого он отобразит следующее меню:
#########################################
“Пожалуйста, выберите режим!!!
- Добавить пользователей вручную
2. Чтение пользователей автоматически из текстового файла###########################################
Теперь, если пользователь выбирает 1. Добавить пользователей вручную, то скрипт запросит у пользователя имя пользователя, группу и пароль; он будет использовать следующие команды для имени пользователя и группы:
read usr_nameread usr_groupТеперь, используя вышеуказанную информацию, он добавит пользователя, используя следующую команду:
useradd -g $usr_group -m $usr_nameДля пароля он будет использовать следующую команду:
passwd $usr_nameТеперь, если пользователь выбирает опцию 2. Чтение пользователей автоматически из текстового файла, то скрипт находит текстовый файл и проверяет, существует ли он, затем он будет читать информацию, такую как имя пользователя, группа, пароль из текстового файла.
Теперь скрипт отобразит текущий рабочий каталог, где текстовый файл должен находиться, используя следующую команду:
echo $(pwd)/users.txt
Теперь скрипт спрашивает, правильный ли указанный выше путь к текстовому файлу или хотите ли вы ввести путь к файлу вручную, он отобразит следующее сообщение пользователю:
Хотите использовать указанный выше ПУТЬ ПО УМОЛЧАНИЮ? Да=1 & Нет=2Если пользователь нажимает 1 для Да, то скрипт загрузит текстовый файл из указанного пути, используя следующую команду:
Path=$($pwd)users.txtЕсли пользователь нажимает 2 для Нет, то скрипт попросит пользователя ввести правильный путь к текстовому файлу и прочитать путь к файлу, используя следующую команду:
read PathПуть к текстовому файлу хранится в переменной “Path”. Следующая команда будет использоваться для проверки существования файла:
if [ -e $Path ];Он извлечет имя пользователя из текстового файла, используя следующую команду:
Username=`grep "Username00$num" $Path | cut -f2 -d:`Он извлечет группу из текстового файла, используя следующую команду:
Group=`grep "Group" $Path |cut -f2 -d:`Он извлечет пароль из текстового файла, используя следующую команду:
Password=`grep "Password" $Path | cut -f2 -d:`Теперь скрипт использует переменные, которые содержат информацию о пользователях, и добавляет их в Linux OS, используя следующие команды:
Для добавления группы он будет использовать следующую команду:
groupadd $GroupДля добавления пользователей в группу он будет использовать следующую команду:
useradd -g $Group -m $UsernameДля установки пароля для всех пользователей он использует следующую команду:
echo $Password | /usr/bin/passwd --stdin $UsernameПароль - это переменная, которая содержит один и тот же пароль для всех пользователей, он извлекается из текстового файла.
2. Проверка пользователей
Из меню:
### МЕНЮ ###- ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ
- Проверить пользователей
- Удалить пользователей
- ВЫХОД
Если пользователь выбирает опцию 2. Проверить пользователей, то появится другое меню, похожее на:
#################################
Пожалуйста, выберите режим!!!
1. Проверить всех пользователей системы- Проверить всех пользователей текстового файла
#################################
Из вышеуказанного меню, если пользователь выбирает опцию 1. Проверить всех пользователей системы, то все пользователи системы будут отображены пользователю, я использовал следующую команду для этой цели:
cat /etc/passwd |grep bashРезультат команды в моем случае вернет следующих пользователей bash:
root:x:0:0:root:/root:/bin/bash
lucky:x:501:501:Lucky:/home/lucky:/bin/bash
Теперь, если пользователь выбирает опцию 2. Проверить всех пользователей текстового файла, то все пользователи, упомянутые в текстовом файле, будут проверены. В моем случае я использовал следующую команду, чтобы проверить пользователей текстового файла, добавлены ли они в Linux OS или нет, и сколько пользователей у меня есть.
Чтобы проверить пользователей, я использовал следующую команду в своем скрипте:
Path=$($pwd)users.txt
varify=grep "varify" $Path |cut -f2 -d:
cat /etc/passwd | grep $varify
Проверка - это переменная, которая содержит уникальное значение имен пользователей.
Чтобы отобразить общее количество пользователей, я использовал следующую команду:
echo -e “\nУ вас в настоящее время”
cat /etc/passwd | grep $varify |wc -l;
echo “пользователей, добавленных из вашего текстового файла”
Результат вышеуказанной команды в моем случае:
fa05btn001:x:502:502::/home/fa05btn001:/bin/bash
fa05btn002:x:503:502::/home/fa05btn002:/bin/bash
fa05btn003:x:504:502::/home/fa05btn003:/bin/bash
fa05btn004:x:505:502::/home/fa05btn004:/bin/bash
fa05btn005:x:506:502::/home/fa05btn005:/bin/bash
fa05btn006:x:507:502::/home/fa05btn006:/bin/bash
fa05btn007:x:508:502::/home/fa05btn007:/bin/bash
fa05btn008:x:509:502::/home/fa05btn008:/bin/bash
У вас в настоящее время 8 пользователей, добавленных из вашего текстового файла
3. Удалить пользователей
Из меню:
МЕНЮ
ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ
Проверить пользователей
Удалить пользователей
4. ВЫХОДЕсли пользователь выбирает опцию 3. Удалить пользователей, то перед тем, как продолжить, будет выполнена проверка пользователя как root. Если пользователь успешно подтвержден как root, то появится другое меню, похожее на:
##############################################
Пожалуйста, выберите режим!!!
Удалить конкретного пользователя
Удалить всех пользователей, указанных в текстовом файле
##############################################
Теперь из вышеуказанного меню, если пользователь выбирает опцию 1. Удалить конкретного пользователя, то скрипт отобразит текущих пользователей системы и попросит пользователя ввести имя пользователя для удаления.
Чтобы отобразить всех пользователей системы, я использовал следующую команду:
cat /etc/passwd |grep bash Вышеуказанная команда отобразит следующий результат:
У вас в настоящее время следующие ПОЛЬЗОВАТЕЛИ добавлены в вашу систему
root:x:0:0:root:/root:/bin/bash
lucky:x:501:501:Lucky:/home/lucky:/bin/bash
fa05btn001:x:502:502::/home/fa05btn001:/bin/bash
fa05btn002:x:503:502::/home/fa05btn002:/bin/bash
fa05btn003:x:504:502::/home/fa05btn003:/bin/bash
fa05btn004:x:505:502::/home/fa05btn004:/bin/bash
fa05btn005:x:506:502::/home/fa05btn005:/bin/bash
fa05btn006:x:507:502::/home/fa05btn006:/bin/bash
fa05btn007:x:508:502::/home/fa05btn007:/bin/bash
fa05btn008:x:509:502::/home/fa05btn008:/bin/bash
Введите имя пользователя, которого вы хотите удалить:Теперь пользователя попросят ввести имя пользователя для удаления, и когда пользователь введет имя пользователя, которого он/она хочет удалить, Linux OS будет искать пользователя в вышеуказанном файле и удалит пользователя, используя следующую команду:
read user_name
userdel -r $user_name
Теперь, если пользователь выбирает опцию
2. Удалить всех пользователей, указанных в текстовом файле
то скрипт удалит всех пользователей, перечисленных в этом текстовом файле.
Следующая команда извлечет имена пользователей из текстового файла:
Username=`grep "Username00$num" $Path | cut -f2 -d:`Следующий сегмент скрипта перейдет в конец файла и завершит цикл:
if [ $Username == “EOF” ]; then
clear
main
fi
Следующая команда удалит пользователей, перечисленных в текстовом файле:
userdel -r $UsernameПримечание: Я протестировал свой скрипт ADDUSER.sh на PCLinuxOS, и я надеюсь, что он также будет хорошо работать на других дистрибутивах Linux. Каждый может изменить код, а также, пожалуйста, поделитесь им с другими.
Хорошего времени. :-)
СЛЕДУЮЩИЙ - ЭТО ПОЛНЫЙ СКРИПТ ДЛЯ ДОБАВЛЕНИЯ, УДАЛЕНИЯ И ПРОВЕРКИ ПОЛЬЗОВАТЕЛЕЙ В LINUX OS.
Создано USMAN AKRAM (ajaonchat)
#!/bin/bash ############################################################### #Этот скрипт создан # # USMAN AKRAM (ajaonchat) # # FA05-BTN-005 # # BTN-6 # ############################################################### add_users() { ROOT_UID=0 #Пользователь root имеет UID 0 if [ "$UID" -ne "$ROOT_UID" ]; then echo "Вы должны быть пользователем root, чтобы запустить этот скрипт!**" exit fi echo echo Личность подтверждена_Вы - Root echo echo -e "\n#########################################\n" echo -e "Пожалуйста, выберите режим!!!\n" echo -e "1. Добавить пользователей вручную\n 2. Чтение пользователей автоматически из текстового файла\n" echo -e "###########################################" read add_opt case $add_opt in 1) echo -e "Пожалуйста, введите имя пользователя:" read usr_name echo -e "Пожалуйста, введите группу пользователя" read usr_group groupadd $usr_group useradd -g $usr_group -m $usr_name echo -e "Пожалуйста, введите пароль для пользователя $usr_name" passwd $usr_name ;; 2) echo echo "Текущий рабочий каталог: `pwd`/users.txt" echo echo -e "Хотите использовать указанный выше ПУТЬ ПО УМОЛЧАНИЮ? Да=1 & Нет=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "Пожалуйста, введите правильный путь к файлу (например, /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then #Если указанный файл существует Username=lucky num=1 while [ $Username != "EOF" ] do Username=`grep "Username00$num" $Path | cut -f2 -d:` #Извлечь имя пользователя из текстового файла num=$(($num+1)) Password=`grep "Password" $Path | cut -f2 -d:` #Извлечь пароль из текстового файла Group=`grep "Group" $Path |cut -f2 -d:` #Извлечь группу из текстового файла groupadd $Group #Добавляет пользователя в систему и задает им пароль if [ $Username == "EOF" ]; then clear main fi #Добавляет пользователя в систему useradd -g $Group -m $Username #Добавить пароль пользователей echo $Password | /usr/bin/passwd --stdin $Username #пароль пользователя будет назначен done else #Если указанный файл не существует echo -e "\n#############################################" echo -e "\n######НЕ МОЖНО НАЙТИ или ЛОКАЛИЗОВАТЬ ФАЙЛ!!!!#####" echo -e "\n#############################################" fi;; *) echo -e "Вы выбрали неправильный вариант!!!" esac } varify() { echo -e "#################################" echo -e "Пожалуйста, выберите режим!!!\n" echo -e "1. Проверить всех пользователей системы\n 2. Проверить всех пользователей текстового файла\n" echo -e "#################################" read varify_user case $varify_user in 1) cat /etc/passwd |grep bash;; 2) echo echo "Текущий рабочий каталог: `pwd`/users.txt" echo echo -e "Хотите использовать указанный выше ПУТЬ ПО УМОЛЧАНИЮ? Да=1 & Нет=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "Пожалуйста, введите правильный путь к файлу (например, /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then Path=$($pwd)users.txt varify=`grep "varify" $Path |cut -f2 -d:` cat /etc/passwd | grep $varify echo -e "\nУ вас в настоящее время " cat /etc/passwd | grep $varify |wc -l echo "пользователей, добавленных из вашего текстового файла" else #Если указанный файл не существует echo -e "\n#############################################" echo -e "\n######НЕ МОЖНО НАЙТИ или ЛОКАЛИЗОВАТЬ ФАЙЛ!!!!#####" echo -e "\n#############################################" fi ;; *) echo -e "Неправильный выбор" esac } del_users() { #Этот скрипт удалит пользователей из домашнего каталога!!!! ROOT_UID=0 #Пользователь root имеет UID 0 if [ "$UID" -ne "$ROOT_UID" ]; then echo "**Вы должны быть пользователем root, чтобы запустить этот скрипт!**" exit fi echo echo Личность подтверждена_Вы - Root echo echo echo "Текущий рабочий каталог: `pwd`/students.txt" echo #Это меню для выбора режима удаления пользователей, либо удалить выбранного пользователя, либо удалить всех пользователей, которых у вас есть в текстовом файле...??? echo -e "####################################" echo -e "\nПожалуйста, выберите режим!!!\n 1. Удалить конкретного пользователя\n 2. Удалить всех пользователей, указанных в текстовом файле\n" echo -e "####################################" read del_opt case $del_opt in 1) echo -e "\n\nУ вас в настоящее время следующие ПОЛЬЗОВАТЕЛИ добавлены в вашу систему\n" cat /etc/passwd |grep bash echo -e "\n\n Введите имя пользователя, которого вы хотите удалить:" read user_name userdel -r $user_name ;; 2) echo echo "Текущий рабочий каталог: `pwd`/users.txt" echo echo -e "Хотите использовать указанный выше ПУТЬ ПО УМОЛЧАНИЮ? Да=1 & Нет=2" read yn if [ $yn == 1 ]; then Path=$($pwd)users.txt else echo -n "Пожалуйста, введите правильный путь к файлу (например, /root/folder/filename.txt): " read Path fi if [ -e $Path ]; then #Если указанный файл существует num=1 Username=lucky while [ $Username != "EOF" ] do Username=`grep "Username00$num" $Path | cut -f2 -d:` #Извлечь имя пользователя из текстового файла if [ $Username == "EOF" ]; then clear main fi userdel -r $Username num=$(($num+1)) done else #Если указанный файл не существует echo -e "\n#############################################" echo -e "\n######НЕ МОЖНО НАЙТИ или ЛОКАЛИЗОВАТЬ ФАЙЛ!!!!#####" echo -e "\n#############################################" fi ;; *) echo -e "Неправильный выбор" esac } main() { opt=1 while [ $opt -le 4 ] do clear echo -e " ### МЕНЮ ###\n 1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ\n 2. Проверить пользователей\n 3. Удалить пользователей\n 4. ВЫХОД\n" read opt case $opt in 1) add_users ;; 2) varify ;; 3) del_users ;; 4) exit 0 ;; *) echo -e "Вы ввели неправильный выбор!!!" esac echo -e "\nХотите снова запустить скрипт Да=1 & Нет=4." read opt done } main exit 0
Это текстовый файл, который я использовал с моим скриптом
#######################################################
СОЗДАНО
USMAN AKRAM (LUCKY)
FA05-BTN-005
[email protected]
#######################################################
Учетная запись студента COMSATS Abbottabad
==============================
Имя файла:users.txt
Год:2008
Кампус:CIIT-ABTD
Группа:btn
##Следующие пользователи будут добавлены в домашний каталог!!!
Username001:fa05btn001
Username002:fa05btn002
Username003:fa05btn003
Username004:fa05btn004
Username005:fa05btn005
Username006:fa05btn006
Username007:fa05btn007
Username008:fa05btn008
Username009:EOF
#это будет конец пользователя
проверка:fa05btn
Пароль:123456
Конец текстового файла!!!!Создано USMAN AKRAM(Lucky), студентом Университета COMSATS Abbottabad [BS(TN)-6] Email Address: [email protected]
Get new posts in your inbox
No spam. Unsubscribe anytime.