首页 > 代码库 > linux批量新建用户帐号脚本

linux批量新建用户帐号脚本

    在啃鸟哥的linux私房菜这本书,看到后面发现前面学的渐渐忘记了. 为了熟悉一些命令, 练习一下shell脚本 在14章看到的批量新建帐号范例,就学着,写一下练练手。  下面的代码有注释 照着鸟哥写的,稍加改动 符合学校的编制。

一.批量创建帐号并将信息保存至文件

    没有像书上提供可选择密码生成方式,密码是和帐号一样,并设置了登录以后强制用户更改密码,觉得这种方案更安全

 1 #!/bin/bash
 2 #
 3 #this program use to add account for your linux
 4 #referece: vbirds private dish.
 5 #
 6 #History: 2017/04/13
 7 
 8 
 9 #保存帐号密码文件
10 accountfile="user.passwd"
11 
12 read -p "输入年级:如(2015):"  username_grade
13 read -p "输入班级号:如(1122):" username_class
14 read -p "输入编号位数:如(2):" nu_nu
15 read -p "输入起始号码:如(1):" nu_start
16 read -p "输入帐号数量:如(10):" nu_amount
17 
18 if [ "$username_grade" == "" -o "username_class" == "" ]; then  
19     echo "请输入年级班级信息!";
20     exit 1
21 fi
22 
23 #判断数字是否合法
24 testing0=$(echo $nu_nu | grep ^0-9)
25 testing1=$(echo $nu_start | grep ^0-9)
26 testing2=$(echo $nu_amount | grep ^0-9)
27 
28 if [ "$testing0" != "" -o "$testing1" != "" -o "$testing2" != "" ]; then
29     echo "输入的数字不对!";
30     exit 1
31 fi 
32 
33 #如果文件存在重命名加上日期
34 [ -f "$accountfile" ] && mv $accountfile "$accountfile"$(date +%Y%m%d%s)
35 
36 nu_end=$(($nu_start+$nu_amount-1))
37 
38 for((i=$nu_start; i<=$nu_end; i++))
39 do 
40     #${i} 统计数字i的长度
41     nu_len=${#i}
42     if [ $nu_nu -lt $nu_len ]; then
43     echo "输入不合理,编号位数不足或帐号数量过多!"
44     echo "please check it out"
45     exit 1
46     fi
47     
48     #需要在编号前面补零的位数
49     nu_diff=$(($nu_nu - $nu_len))
50     
51     nu_nn=""
52     if [ "$nu_diff" != "0" ]; then
53     nu_nn=0000000000
54     nu_nn=${nu_nn:1:$nu_diff}
55     fi
56     
57     #将以上信息年级,班级,序号拼接起来组成一个帐号
58     account=${username_grade}${username_class}${nu_nn}${i}
59     password="$account"
60     
61     #帐号密码写入文件
62     echo 帐号:"$account":密码:"$password" | tee -a "$accountfile"
63 done
64 
65 #新建帐号密码
66 usernames=$(cat "$accountfile" | cut -d: -f2)
67 
68 for u in $usernames
69 do
70     useradd $u
71     echo $u | passwd --stdin $u
72     #强制登录修改密码
73     chage -d 0 $u
74     
75 done
76 
77 echo "Ok! 新建$nu_amount个账户."

    如果同一个班的学生有需求在同一个组 将7行改为   useradd -g username_class $u 

 

二.从刚才保存的文件批量删除刚才创建的帐号

    手残建错了怎么办,批量删除刚才的帐号

1 #!/bin/bash
2 # to del the user from file
3 
4 usernames=$(cat user.passwd | cut -d: -f2)
5 for username in $usernames
6 do
7     echo "删除用户$username"
8     userdel -r $username
9 done

      

  附上鸟哥书上提供的原版地址http://linux.vbird.org/linux_basic/0410accountmanager/account2.sh

       我没有重复造轮子,我只是在练习。

linux批量新建用户帐号脚本