首页 > 代码库 > linux批量新建用户帐号脚本
linux批量新建用户帐号脚本
在啃鸟哥的linux私房菜这本书,看到后面发现前面学的渐渐忘记了. 为了熟悉一些命令, 练习一下shell脚本 在14章看到的批量新建帐号范例,就学着,写一下练练手。 下面的代码有注释 照着鸟哥写的,稍加改动 符合学校的编制。
一.批量创建帐号并将信息保存至文件
没有像书上提供可选择密码生成方式,密码是和帐号一样,并设置了登录以后强制用户更改密码,觉得这种方案更安全
1 #!/bin/bash 2 # 3 #this program use to add account for your linux 4 #referece: vbird‘s 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批量新建用户帐号脚本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。