shell之批量创建删除用户和组

小楼是一个系统管理员,需要为一个教室中的服务器添加一个老师和若干学生用户,手动添加太麻烦了,请你为他编写一个bash脚本 userctr.sh 实现批量添加和删除用户。老师用户名,学生用户名和学生数量使用参数进行控制。

userctr.sh 脚本执行时候包括四个参数:

bash userctr.sh 操作(add或者del)教师名 学生名前缀 学生数量

脚本成功执行后将创建1个教师用户和若干个学生用户,满足下列条件:

1、学生数量参数,参数范围为1~10,若超过10或不为正整数,则报错打印 parameter error
2、学生名前缀为字符串,只允许包含小写字母,否则报错打印 parameter error,前缀后面跟数字序列
3、每个用户默认使用 zsh,教师用户默认具备 sudo 权限
4、每个用户设置一个随机6位数字密码,在添加命令执行后并将用户名和对应的密码输出
5、如果某个用户名已经存在,则默认不需要创建该用户,输出时密码显示为6个星号

执行脚本的范例:

# 添加一个 teacher 用户和 stu1 到 stu6 6个学生用户
$ bash userctr.sh add teacher stu 6
teacher:901231
stu1:271828
stu2:928172
stu3:******
stu4:384712
stu5:098273
stu6:921098

# 删除一个 teacher 用户和 stu1 到 stu6 6个学生用户
$ bash test.sh del teacher stu 6

其中 stu3 六个星号代表这个用户先前已经被创建了,所以该命令执行的时候并不清楚该用户的密码。删除命令执行时如果某个用户不存在也不需要报错,直接执行删除其他用户。
目标

脚本存放的路径必须在 home/shiyanlou/userctr.sh
脚本执行需要满足上述需求
参数不符合要求需要直接在屏幕打印 parameter error

提示语

usermod
chpasswd
md5sum

代码如下:

#!/bin/bash
if [ $# -ne 4 ];then   #判断参数个数是否为4
        echo "parameter error"
        exit 0
fi
expr $4 + 0 &>/dev/null #判断第四个参数是否为整数
if [ $? -ne 0 ] || [ $4 -gt 10 ] || [ $4 -lt 1 ];then
        echo "parameter error"
        exit 0
fi

if [[ ! $3 =~ ^[a-z]+$ ]];then #第三个参数是否全为小写字母组成
        echo "parameter error"
        exit 0
fi

function add_user(){
        if `id $1 &>/dev/null`;then
                echo "$1:******"
        else
                useradd -s /usr/bin/zsh $1 &> /dev/null
                #随机数的获取
                password=`head /dev/urandom |tr -dc '0-9' | cut 1-6`
                #密码不必手动输入
                echo $password | passwd $1 --stdin
                echo "$1:$password"
        fi
}

function del_user(){
        if `id $1 &> /dev/null`;then
                userdel $1
        fi
}

if [ $1 == 'add' ];then
        add_user $2
        for i in `seq $4`;do
                add_user ${3}${i}
        done
elif [ $1 == 'del' ];then
        del_user $2
        for i in `seq $4`;do
                del_user ${3}${i}
        done
fi
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值