shell脚本——001批量添加用户

题目

写一个脚本实现批量添加20个用户,user01~20,密码为user后跟5个随机字符

知识储备与复习(尴尬,遗忘了好多)

echo "asdf" | passwd --stdin  username  
change -d 0 username   ## 强制用户下次登录修改密码

回顾for循环
for((i=1; i<20; i++))
do
    语句
done
或者
for 变量 in 列表

bash变量赋值不能有空格
i=01
useradd  user$i

关于随机字符
echo $RANDOM(这个不可以,它只能生成(0,32767)内的数字 )
包含大小学字母和数字5位
head /dev/urandom | tr -dc  A-Za-z0-9 |head -c 5

[tr参考](https://blog.csdn.net/zhuying_linux/article/details/6825568)

tr -dc 0-9 # 删除文本中所有不是数字的字符,并删除空格 
tr (translate)字符替换,大小写替换

head -c  指定显示的字符数

我的实现

#! /bin/bash
## this is a useradding script
n=20
for ((i=1; i< n+1; i++))
do
    useradd user$i
    echo user$(head /dev/urandom |tr -cd A_Za-z0-9|head -c 5) |passwd --stdin user$i
    change -d 0 user$i
    echo "create user user$i and it's passwd"
done
      

测试成功,测试前可以先在命令行测试一下change命令能否使用,也可以去掉此行

感悟

好久没有写shell脚本了,写了一个简单的批量添加用户的脚本,发现自己忘了好多知识点,但同时也发现脚本其实并不难,只是自己写的太少了!
写的多了,面试的时候一眼就能看出来。

所以呢,以后每天写上一个shell脚本
直到自己可以独立根据日常工作写出脚本

注意!!!

以上脚本有一个致命的缺陷:如果你批量添加了用户而且初始化了密码。可是你压根不知道密码是多少!!!这就很伤
改进如下:

#! /bin/bash
## this is a useradding script
n=100
for ((i=95; i< n; i++))
do
   useradd user$i
   pass=user$(head /dev/urandom |tr -cd A_Za-z0-9|head -c 5)
   echo $pass |passwd --stdin user$i
   echo "user$i  password: $pass " >> /tmp/user.txt
done

echo " 用户名以及初始化密码保存在/tmp/user.txt中"

里面的数字是自己测试时改的
以上脚本还有什么需要完善的欢迎提醒

你可能感兴趣的:(shell脚本——001批量添加用户)