提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默认的 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 "您需要输入账户名"
        exit 2
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 脚本名

三、删除账户

使用命令删除账户(-r 连家目录一起删除)

[root@VM_0_10_centos ~]# userdel -r 账户名
# ==================================
# 删除账户及家目录
 read -p "Please enter an account to delete:" username
 if [ -z $username ];
 then
        echo "您需要输入删除的账户名"
        exit 2
 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"
    exit 0
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"
    exit 0
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
01-26 14:31