如何从文本文件将用户添加到Linux操作系统
本教程是关于一个bash脚本,从文本文件中添加,删除和验证用户; 它也可以手动添加,删除和修改用户。 该脚本可用于通过从任何文本文件获取用户信息来添加,删除和验证用户到Linux操作系统,此脚本也可以手动添加,删除或验证用户,我将这两个功能都放在一个脚本中文件。 文本文件可由管理员指定。
:-) !!!脚本完全用户友好! :-)
您可以在本教程末尾找到该脚本。
启动脚本
当您启动脚本时,菜单将显示如下:
### MENU ###
1. ADD USERS
2. Varify Users
3. Delete Users
4. EXIT
1.添加用户
现在从键盘中按 “1”,从菜单中选择选项 1. ADD USERS 。现在脚本确认用户必须是root用户 ,我们知道root的UID为零(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现在如果用户选择选项 2.删除 TEXT文件中指定的所有用户,则脚本将删除该文本文件中列出的所有用户。
userdel -r $user_name
以下命令将从文本文件中提取用户名:
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