题目:用shell脚本批量创建用户stu01-stu10,并生成8个字符的随机密码

一、解题思路:

1、在linux系统下添加用户命令--useradd

 useradd stu01

2、非交互式给用户设置密码

 echo "123456" | passwd --stdin stu01

3、数字前加0

 {01..10}

3、随机生成8位字符串

 echo $RANDOM | md5sum | cut -c 1-8   

4、循环的思路添加用户

for ;do ;done

二、开发shell脚本:

#!/bin/bash
#Desctiption: Create 10 users in batches and randomly generate 8-character passwords
#加载系统函数库,用到action函数
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
#判断是否当前用户是否为root用户
if [ $UID -ne 0 ];then
  echo "Pls run this script by root"
  exit 1
fi
#批量创建用户
for user in stu{01..10}
  do
    #判断要创建的用户是否已经存在。如果存在,给出错误提示,继续下一次循环
    num=$(grep -w "$user" /etc/passwd | wc -l)
    if [ $num -ne 0 ];then
      action "useradd: user $user already exists" /bin/false
      continue
    fi
    #生成8为随机字符,并赋值给变量pass
    pass=$(echo $RANDOM | md5sum | cut -c 1-8)
    #循环创建用户,成功之后执行下一条语句
    useradd $user && \
    #非交互设置用户密码,不打印输出
    echo $pass | passwd --stdin $user >/dev/null 2>&1
    #判断用户是否创建成功
    RETVEL=$?
    if [ $RETVEL -eq 0 ];then
         action "useradd: $user successfully" /bin/true
      else
         action "useradd: $user failed" /bin/false
    fi
    #将用户名和密码写入到/tmp/passwd.txt文件当中
    echo -e "$user\t$pass" >> /tmp/passwd.txt
done

三、测试结果

[root@lt1 script]# sh add_user.sh 
useradd: stu01 successfully                                [  OK  ]
useradd: stu02 successfully                                [  OK  ]
useradd: stu03 successfully                                [  OK  ]
useradd: stu04 successfully                                [  OK  ]
useradd: stu05 successfully                                [  OK  ]
useradd: stu06 successfully                                [  OK  ]
useradd: stu07 successfully                                [  OK  ]
useradd: stu08 successfully                                [  OK  ]
useradd: stu09 successfully                                [  OK  ]
useradd: stu10 successfully                                [  OK  ]
[root@lt1 script]# cat /tmp/passwd.txt 
stu01	2bc5773d
stu02	f2ad5e18
stu03	f3a84bd0
stu04	535c4aa9
stu06	8261bae6
stu07	caba66a8
stu08	44db0f2c
stu09	c3f0a1d8
stu10	c622b950

测试成功!