Linux, Users, Script · 10 min read · Dec 15, 2025

Как добавить пользователей в Linux OS из текстового файла

Как добавить пользователей в Linux OS из текстового файла

Этот учебник посвящен bash-скрипту для добавления, удаления и проверки пользователей из текстового файла; он также может добавлять, удалять и изменять пользователей вручную. Этот скрипт можно использовать для добавления, удаления и проверки пользователей в Linux OS, извлекая информацию о пользователе из любого текстового файла, и этот скрипт также может добавлять, удалять или проверять пользователей вручную, я объединил обе эти функции в одном скрипте. Текстовый файл может быть указан администратором.

:-) !!!Скрипт полностью удобен для пользователя!!! :-)

Вы можете найти скрипт в конце этого учебника.

Запуск скрипта

Когда вы запускаете скрипт, появится меню, похожее на это:

МЕНЮ

  1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ

  2. Проверить пользователей

  3. Удалить пользователей

4. ВЫХОД

1. Добавить пользователей

Теперь выберите опцию

1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ

из меню, нажав

“1”

на клавиатуре.

Теперь скрипт подтверждает, что пользователь должен быть root, и мы знаем, что UID root равен нулю (0). Поэтому сначала я сравниваю UID текущего пользователя с нулем (0), если UID не совпадает с UID root, то будет отображено следующее сообщение:

**Вы должны быть пользователем root, чтобы запустить этот скрипт!

и если UID

совпадает с UID root, то отображается следующее сообщение и запускается скрипт:

*Личность подтверждена_Вы - Root*

Мы можем проверить UID текущего пользователя, введя следующую команду в терминале:

echo $UID

Если пользователь является root, то функция 1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ будет выполнена.

Теперь скрипт спросит пользователя, хочет ли он добавить пользователей вручную или позволить скрипту получить информацию о пользователе из текстового файла. Для этого он отобразит следующее меню:

#########################################

“Пожалуйста, выберите режим!!!

  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. Проверка пользователей

Из меню:

    ### МЕНЮ ###
  1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ
  2. Проверить пользователей
  3. Удалить пользователей
  4. ВЫХОД

Если пользователь выбирает опцию 2. Проверить пользователей, то появится другое меню, похожее на:

#################################

Пожалуйста, выберите режим!!!

1. Проверить всех пользователей системы
  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. Удалить пользователей

Из меню:

МЕНЮ

  1. ДОБАВИТЬ ПОЛЬЗОВАТЕЛЕЙ

  2. Проверить пользователей

  3. Удалить пользователей

4. ВЫХОД

Если пользователь выбирает опцию 3. Удалить пользователей, то перед тем, как продолжить, будет выполнена проверка пользователя как root. Если пользователь успешно подтвержден как root, то появится другое меню, похожее на:

##############################################

Пожалуйста, выберите режим!!!

  1. Удалить конкретного пользователя

  2. Удалить всех пользователей, указанных в текстовом файле
    ##############################################

Теперь из вышеуказанного меню, если пользователь выбирает опцию 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]

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.