一、字符串运算符

二、创建账户

1.提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 123456 作为默认密码。

read命令参考网址:https://www.cnblogs.com/xiangzi888/archive/2012/03/27/2420084.html
[root@VM_0_10_centos shellScript]# vi autoCreateUser.sh #!/bin/bash # 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户 # 不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默 # 认的123456 作为默认密码。 read-p "Please input a username:" username #-z 判断一个变量是否为空。如果为空,提示用户必须输入账户名并退出脚本,退出码为2 # 没有输入账户名,退出后使用$?查看返回码为2 if [ -z $username ]; then echo"您需要输入账户名" exit2 fi # 使用stty-echo 关闭shell的回显功能(即在命令行输入的密码为不可见) # 使用stty echo 打开shell的回显功能 stty-echo read-p "Please input a password:" pass stty echo pass=${pass:-123456} useradd"$username" echo"$pass" | passwd --stdin "$username"
运行脚本之前先赋予执行的权限
chmod a+x 脚本名

2.使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息

#!/bin/bash # 使用 user.txt 文件中的账户,自动创建对应的账户并配置初始密码 # 本脚本执行,需提前准备一个 user.txt 文件,该文件中包含有若干用户名信息 for iin `cat user.txt` do useradd $i echo"123456" | passwd ‐‐stdin $i done

三、删除账户

使用命令删除账户(-r 连家目录一起删除)
[root@VM_0_10_centos ~]# userdel -r 账户名
# ================================== # 删除账户及家目录 read-p "Please enter an account to delete:" usernameif [ -z $username ]; then echo"您需要输入删除的账户名" exit2 fi userdel-r $username echo"The user delete success!"; #==================================

四、批量创建账户

通过将账户和密码写入一个txt文件,通过脚本读取创建文件中设置的账户和密码
txt文件不作解释,需要注意的一点是账户和密码之间是使用什么作为分隔符,脚本中则需要修改成对应的分隔符
[root@VM_0_10_centos shellScript]# cat createUsers.sh #!/bin/bash # 通过读取users.txt文件批量添加账户 echo $0=$0 echo $1=$1 if [ $# -eq 0 ];then echo"[usage] 请输入批量创建的账户文件:./createUsers.sh users.txt" exit0 fi # cat命令的输出作为read命令的输入,read读到的值放入line中cat $1 |while read line do # echo $line(输出一行信息) # awk-F " " 以空格分隔(如果txt中是:,则以:分隔) username=$(echo $line | awk -F " " '{print $1}') pass=$(echo $line | awk -F " " '{print $2}') useradd $username echo"$pass" | passwd --stdin "$username" done

五、批量删除账户

通过将账户和密码写入一个txt文件,通过脚本读取创建文件中设置的账户并删除
[root@VM_0_10_centos shellScript]# cat delUsers.sh #!/bin/bash # 批量删除 echo $0=$0 echo $1=$1 if [ $# -eq 0 ];then echo"[usage] 请输入批量创建的账户文件:./createUsers.sh users.txt" exit0 fi # cat命令的输出作为read命令的输入,read读到的值放入line中cat $1 |while read line do # echo $line # awk-F " " 以空格分隔(如果txt中是:,则以:分隔) username=$(echo $line | awk -F " " '{print $1}') userdel-r $username done
六、让用户输入需要创建的用户数量和用户名前缀,使用脚本自动创建
[root@rhel8 shell]# cat input_add_user.sh #!/bin/bash ########################################################################## # useradd # # by author tanbaobao 2020/06/16 # ########################################################################### 从键盘输入 read -p"Please Input Number:" NUM # 单个[]不支持正则表达式 ^[0-9]+$只匹配数字 ^0+$只匹配0 +表示一个或多个if [[ !"$NUM" =~ ^[0-9]+$ ||"$NUM" =~ ^0+$ ]];then echo-e"\033[32mError Number.\033[0m"# exit read -p"请重新输入【1-9】之间的数字:" NUM fi read-p"Please Input Prefix:" PREFIX if [ -z"$PREFIX" ];then echo-e"\033[32mError Prefix.\033[0m"# exit read -p"请重新输入一个字符串:" PREFIX fi for iin `seq$NUM` do USER=$PREFIX$i useradd$USER echo"123456" | passwd --stdin$USER &>/dev/nullif [ $?-eq 0 ];then echo-e"\033[32m$USER Already Create.\033[0m" fi done
七、在上面脚本基础上加一个输入密码
[root@rhel8 shell]# cat input_user_pre_pass_num.sh #!/bin/bash ########################################################################## # useradd # # by author tanbaobao 2020/06/22 # ##########################################################################while : do# 从键盘读取 read -p"Please Enter prefix & password & num: [alice 12345 1]:" PREFIX PASS NUM printf"user infomation: ------------------------------------------ user prefix: $PREFIX user password: $PASS user num: $NUM ------------------------------------------" read-p"Are You Sure?[y/n]:" ACTIONif ["$ACTION" ="y" -o"$ACTION" ="Y" -o"$ACTION" ="yes" -o"$ACTION" ="YES" ];thenbreak fi done for iin `seq -w$NUM` do USER=$PREFIX$i id$USER &>/dev/nullif [ $?-eq 0 ];then echo"user $USER already exists."else useradd$USER echo"$PASS" | passwd --stdin$USER &>/dev/nullif [ $?-eq 0 ];then echo"$USER is created." fi fi done
八、上面脚本的综合效果
准备好一个用户和密码的文件
[root@rhel8 shell]# cat users_pass.txt aa01 000000 cc02222222
vv03 adminuser
[root@rhel8 shell]# cat read_txt_create_user.sh #!/bin/bash ########################################################################## # useradd # # by author tanbaobao 2020/06/22 # ##########################################################################if [ $# -eq 0 ];then echo"Usage: `basename $0` file.txt|user" exit1 fi if [ !-f$1 ];then id$1 &>/dev/nullif [ $?-eq 0 ];then echo"user $1 already exists."else useradd$1 read-p"Please set the user $1 password:" INP_PASS echo"$INP_PASS" | passwd --stdin$1 &>/dev/nullif [ $?-eq 0 ];then echo"$1 is created." fi fi else cat$1 |while read linedo# 判断文件中出现的空行问题(${#line}表示line的长度)# break表示跳出循环,后面的不会再执行# continue表示中止本次循环,执行下次循环if [ ${#line} -eq 0 ];thencontinue fi# 这里如果需要考虑分隔符则需要用到-F参数 USER=`echo"$line" |awk-F"" '{print$1}'` PASS=`echo"$line" |awk-F"" '{print$2}'` echo"line:"$line echo"user:"$USER echo"pass:"$PASS id$USER &>/dev/nullif [ $?-eq 0 ];then echo"user $USER already exists."else useradd