如何从文本文件添加用户到Linux操作系统

如何从文本文件将用户添加到Linux操作系统

本教程是关于一个bash脚本,从文本文件中添加,删除和验证用户; 它也可以手动添加,删除和修改用户。 该脚本可用于通过从任何文本文件获取用户信息来添加,删除验证用户到Linux操作系统,此脚本也可以手动添加,删除或验证用户,我将这两个功能都放在一个脚本中文件。 文本文件可由管理员指定。

:-) !!!脚本完全用户友好! :-)

您可以在本教程末尾找到该脚本。

启动脚本

当您启动脚本时,菜单将显示如下:

### MENU ###
1. ADD USERS
2. Varify Users
3. Delete Users
4. EXIT

1.添加用户

现在从键盘中按 “1”,从菜单中选择选项 1. ADD USERS

现在脚本确认用户必须是root用户 ,我们知道rootUID为零(0)。 所以首先我将当前用户的UID与零(0)进行比较,如果UID与root的UID不匹配,那么它将显示以下消息:

****You must be the root user to run this script!****
并且如果 UID与root的 UID匹配,则它显示以下消息并运行该脚本:
***Identity Verified_You are the Root***

我们可以通过在终端中键入以下命令来检查当前用户的UID:

echo $UID

如果用户是root,则将执行1.ADD USERS功能。

现在脚本会询问用户是否要手动添加用户或让脚本从文本文件中获取用户的信息。 为此,它将显示以下菜单:

#########################################
"Please Select the Mode!!!
1. Add the Users Manually
2.Read the Users Automatically from Text File
###########################################

现在如果用户选择1.手动添加用户,则脚本将提示用户用户名,组密码 ; 它将使用以下命令进行用户名和组:

read usr_nameread usr_group

现在通过使用上面的信息,它将使用以下命令添加用户:

useradd -g $usr_group -m $usr_name

对于密码,它将使用以下命令:

passwd $usr_name

现在如果用户选择选项2.从文本文件自动读取用户,则脚本找到文本文件并验证其是否存在,然后将从文本文件中读取用户名,组,密码等信息。

现在脚本将通过使用以下命令显示文本文件应该位于用户的当前工作目录:

echo $(pwd)/users.txt

现在脚本询问文本文件的上述路径是否正确,或者如果要手动输入文件路径,则会向用户显示以下消息:

Do you want to use the above Default PATH? Yes=1 & No=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操作系统,方法是使用以下命令:

要添加组,它将使用以下命令:

groupadd $Group

要将用户添加到组,将使用以下命令:

useradd -g $Group -m $Username

要设置所有用户的密码,它使用以下命令:

echo $Password | /usr/bin/passwd --stdin $Username

密码是包含所有用户相同密码的变量,它从文本文件中提取。

2.验证用户

从菜单中:

### MENU ###
1. ADD USERS 
2. Varify Users
3. Delete Users
4. EXIT

如果用户选择选项2.变更用户另一个菜单将显示如下:

#################################
Please Select the Mode!!!
1.Varify All the Users of System
2.Varify All the Users of TEXT file
#################################

从上述菜单中,如果用户选择选项1.Varify系统的所有用户,则系统的所有用户将显示给用户,我已经使用以下命令:

cat /etc/passwd |grep bash

在我的情况下,命令的结果将返回以下bash用户:

root:x:0:0:root:/root:/bin/bash 
lucky:x:501:501:Lucky:/home/lucky:/bin/bash

现在如果用户选择选项2.修改TEXT文件的所有用户,则文本文件中提到的所有用户都将被验证。 在我的情况下,我使用以下命令验证文本文件的用户是否添加到Linux操作系统,以及我有多少用户。

要验证我在脚本中使用了以下命令的用户:

Path=$($pwd)users.txt
varify=`grep "varify" $Path |cut -f2 -d:`
cat /etc/passwd | grep $varify

Varify是包含用户名唯一值的变量。

要显示我使用以下命令的用户总数:

echo -e "\nYou have Currently" 
cat /etc/passwd | grep $varify |wc -l;
echo "users added from your Text File"

在我的情况下,上述命令的结果是:

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

You have Currently 8 users added from your Text file

3.删除用户

从菜单中:
### MENU ###
1. ADD USERS
2. Varify Users
3. Delete Users
4. EXIT

如果用户选择了选项3.删除用户,然后以root身份验证用户,然后再进一步。 如果用户成功验证成功,则另一个菜单将显示为:

##############################################
Please select the Mode!!!
1.Delete Specific User
2.Delete all Users Specified in the TEXT File
##############################################

如果用户选择了“ 删除特定用户 ”选项,则从上述菜单开始,脚本将显示系统的当前用户,并要求用户输入要删除的用户的名称

要显示系统的所有用户,我使用了以下命令:

cat /etc/passwd |grep bash

上述命令将显示以下结果:

You have currently following USERS Added to your System
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
Type the Name of the User you wants to Delete :

现在用户将要求输入要删除的用户的名字,当用户输入他/她想要删除的用户名时,Linux操作系统将搜索上述文件中的用户,并使用以下命令:

read user_name 
userdel -r $user_name

现在如果用户选择选项 2.删除 TEXT文件中指定的所有用户,则脚本将删除该文本文件中列出的所有用户。

以下命令将从文本文件中提取用户名:

Username=`grep "Username00$num" $Path | cut -f2 -d:`

以下脚本段将转到文件的末尾并终止循环:

if [ $Username == "EOF" ]; then 
clear
main
fi

以下命令将删除文本文件中列出的用户:

userdel -r $Username

注意:我已经在PCLinuxOS上测试了我的ADDUSER.sh脚本,我希望它在其他Linux发行版上也能正常工作。 任何人也可以修改代码,并请与他人分享。

有一个愉快的时光 :-)

以下是在LINUX OS中添加,删除和验证用户的完整脚本。 由USMAN AKRAM(ajaonchat)创建

#!/bin/bash
###############################################################
#This Script is Created by                                    #
#                USMAN AKRAM  (ajaonchat)                     #
#                                       FA05-BTN-005          #
#                            BTN-6                            #
###############################################################
add_users()
{
	ROOT_UID=0      #The root user has a UID of 0
	if      [ "$UID" -ne "$ROOT_UID" ]; then
        	echo "****You must be the root user to run this script!****"
        	exit
	fi
	echo
	echo Identity Verified_You are the Root
	echo 

	echo -e "\n#########################################\n"
	echo -e "Please Select the Mode!!!\n"
	echo -e "1. Add the Users Manually\n
2.Read the Users Automatically  from Text File\n"
	echo -e "###########################################"
	read add_opt
	case $add_opt in
		1)
		echo -e "Please Enter the User name:"
		read usr_name
		echo -e "Please enter the User Group"
		read usr_group
		groupadd $usr_group
       	useradd -g $usr_group -m $usr_name
    	        echo -e "Please enter the Password for User $usr_name"
 	passwd $usr_name ;;
	2)
       echo
       echo "Present working directory is: `pwd`/users.txt"
       echo
       echo -e "Do you want to use the above Default PATH? Yes=1 & No=2"
       read yn
if [ $yn == 1 ]; then
                      Path=$($pwd)users.txt
else
       echo -n "Please enter the correct path to the file (e.g. /root/folder/filename.txt): "
       read Path
fi
if [ -e $Path ]; then           #If the file user specified exists
Username=lucky
num=1
	while  [ $Username != "EOF" ]
		do
		Username=`grep "Username00$num" $Path | cut -f2 -d:`   #Extract Username from text file
num=$(($num+1))
		Password=`grep "Password" $Path | cut -f2 -d:`       #Extract Password from text file
		Group=`grep "Group" $Path |cut -f2 -d:`              #Extract Group From text file 
		
		groupadd $Group		
		
		               #Adds user to the system and gives them a password
           if [ $Username == "EOF" ]; then
                   clear
                   main
           fi
                #Adds user to the system
                useradd -g $Group -m $Username 
                #Add users password
                echo $Password | /usr/bin/passwd --stdin $Username #user Password will be assigned
	done
else  #If the user Specified file doesn't Exists
	echo -e "\n#############################################"
	echo -e "\n######CANNOT FIND or LOCATE THE FILE!!!!#####"
	echo -e "\n#############################################"
fi;;
*) echo -e "You have selected the Wrong Choice!!!"
esac
        
}
varify()
{
	echo -e "#################################"
	echo -e "Please Select the Mode!!!\n"
	echo -e "1.Varify All the Users of System\n
2.Varify All the Users of TEXT file\n"
	echo -e "#################################"
	read varify_user
case $varify_user in
		1) cat /etc/passwd |grep bash;;
		2)
 	echo
        echo "Present working directory is: `pwd`/users.txt"
        echo
        echo -e "Do you want to use the above Default PATH? Yes=1 & No=2"
        read yn
if [ $yn == 1 ]; then
                     Path=$($pwd)users.txt
else
        echo -n "Please enter the correct path to the file (e.g. /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 "\nYou have Currently "
          cat /etc/passwd | grep $varify |wc -l
	  echo  "users added from your Text file" 
else  #If the user Specified file doesn't Exists
      echo -e "\n#############################################"
      echo -e "\n######CANNOT FIND or LOCATE THE FILE!!!!#####"
      echo -e "\n#############################################"
fi ;;
*) echo -e "Wrong Choice"
esac
					 
}

del_users()
{
#This Script will delete the Users from the HOME DIRECTORY!!!!
ROOT_UID=0      #The root user has a UID of 0
	if      [ "$UID" -ne "$ROOT_UID" ]; then
        	echo "****You must be the root user to run this script!****"
        	exit
	fi
	echo
	echo Identity Verified_You are the Root
	echo
	
	echo
	echo "Present working directory is: `pwd`/students.txt"
	echo
	
#This is the Menu to select the mode to Deletion the users, either delete selected user or to delete all the users you have in the TEXT file...???
echo -e "####################################"
echo -e "\nPlease select the Mode!!!\n
1.Delete Specific User\n
2.Delete all Users Specified in the TEXT File\n"
echo -e "####################################"
read del_opt
case $del_opt in
	1)
		echo -e "\n\nYou have currently following USERS Added to your System\n"
		 cat  /etc/passwd |grep bash
		echo -e "\n\n Type the Name of the User you wants to Delete :"
		read user_name
		userdel -r $user_name ;;
	2) 
       echo
       echo "Present working directory is: `pwd`/users.txt"
       echo
       echo -e "Do you want to use the above Default PATH? Yes=1 & No=2"
       read yn
if [ $yn == 1 ]; then
       Path=$($pwd)users.txt
else
       echo -n "Please enter the correct path to the file (e.g. /root/folder/filename.txt): "
       read Path
fi
if [ -e $Path ]; then 		#If the file user specified exists
		num=1
Username=lucky		
		while  [ $Username != "EOF" ]
		do
		Username=`grep "Username00$num" $Path | cut -f2 -d:`   #Extract Username from text file
	
		if [ $Username == "EOF" ]; then
	    		clear
			main
		fi
				                       
                userdel -r $Username
num=$(($num+1))
	done
else  #If the user Specified file doesn't Exists
	echo -e "\n#############################################"
	echo -e "\n######CANNOT FIND or LOCATE THE FILE!!!!#####"
	echo -e "\n#############################################"
fi ;;
*) echo -e "Wrong Choice" 
esac
}

main()
{
	opt=1
while [ $opt -le 4 ]
do
	clear
echo -e "			### MENU ###\n 
			1. ADD USERS\n
			2. Varify Users\n
			3. Delete Users\n
			4. EXIT\n"
read opt
case $opt in
	1) add_users ;;
	2) varify ;;
	3) del_users ;;
	4) exit 0 ;;
	*) echo -e "You have Entered the Wrong Choice!!!"
esac
echo -e "\nWant to run Script Again Yes=1 & No=4."
read opt
done
}
main
exit 0

这是我与我的脚本一起使用的文本文件

#######################################################
CREATED By
                     USMAN AKRAM (LUCKY)
				FA05-BTN-005
					ajaonchat@yahoo.com
#######################################################
COMSATS Abbottabad Student's Account
	==============================
Filename:users.txt
Year:2008
Campus:CIIT-ABTD
Group:btn
##Following are the users that will be added to the HOME Directory!!!
Username001:fa05btn001
Username002:fa05btn002
Username003:fa05btn003
Username004:fa05btn004
Username005:fa05btn005
Username006:fa05btn006
Username007:fa05btn007
Username008:fa05btn008
Username009:EOF
#it will be the End user
varify:fa05btn
Password:123456
End of Text File!!!!

由USMAN AKRAM(幸运)创建,COMSATS大学Abbottabad学生[BS(TN)-6]电子邮件地址:ajaonchat@yahoo.com

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏