linux命令题目(3)

62 阅读1分钟

批量创建用户

创建以user开头的用户,创建6个 设置密码和用户名相同 统计一共创建了几个用户,分别是哪几个 统计创建用户前/etc/passwd文件多少行 统计创建完用户后/etc/passwd文件多少行

#!/bin/bash

echo '- 开始运行程序...'

#设置创建用户数
num=6

#清理环境因素,判断是否创建过该批用户,是则先删除用户
echo '- 正在清理环境因素...'
for((i=1;i<=$num;i++));do
        if [[ $(cat /etc/passwd | grep 'user'$i | wc -l) -ne 0 ]];then
                userdel -r 'user'$i
        fi
done

#统计创建用户前/etc/passwd文件多少行
beforeTotal=$(cat /etc/passwd | wc -l)

sucAddCount=0 #累加创建成功用户数
sucAddUserName=() #数组记录创建成功的用户名

echo -e "- 需要创建用户数为:$num,开始创建user用户...\n"
for((i=1;i<=$num;i++));do
        u='user'$i #用户名变量
        echo '正在创建'$u'...'

		#判断创建正常
        if [[ $(useradd $u) -eq 0 ]];then
                sucAddUserName[$i]=$u #记录用户名
                sucAddCount=$((${sucAddCount} + 1)) #累计成功用户数
        fi
        
        echo $u| passwd --stdin $u #设置密码和用户名相同
        echo '' #输出空行
done

echo '一共创建了'$sucAddCount'个用户,分别为:'${sucAddUserName[@]}

#统计创建用户后/etc/passwd文件多少行
afterTotal=$(cat /etc/passwd | wc -l)
echo '创建前/etc/passwd文件【'$beforeTotal'】行'
echo '创建后/etc/passwd文件【'$afterTotal'】行'
echo '相差【'$(($afterTotal-$beforeTotal))'】行'

输出如下: 在这里插入图片描述