linux批量创建用户脚本
在啃鸟哥的linux私房菜这本书,看到后面发现前面学的渐渐忘记了. 为了熟悉一些命令, 练习一下shell脚本 在14章看到的批量新建帐号范例,就学着,写一下练练手。 下面的代码有注释 照着鸟哥写的,稍加改动 符合学校的编制。
一.批量创建帐号并将信息保存至文件
没有像书上提供可选择密码生成方式,密码是和帐号一样,并设置了登录以后强制用户更改密码,觉得这种方案更安全
#!/bin/bash
#
#this program use to add account for your linux
#referece: vbird's private dish.
#
#History: 2017/04/13
#保存帐号密码文件
accountfile="user.passwd"
read -p "输入年级:如(2015):" username_grade
read -p "输入班级号:如(1122):" username_class
read -p "输入编号位数:如(2):" nu_nu
read -p "输入起始号码:如(1):" nu_start
read -p "输入帐号数量:如(10):" nu_amount
if [ "$username_grade" == "" -o "username_class" == "" ]; then
echo "请输入年级班级信息!";
exit 1
fi
#判断数字是否合法
testing0=$(echo $nu_nu | grep '^0-9')
testing1=$(echo $nu_start | grep '^0-9')
testing2=$(echo $nu_amount | grep '^0-9')
if [ "$testing0" != "" -o "$testing1" != "" -o "$testing2" != "" ]; then
echo "输入的数字不对!";
exit 1
fi
#如果文件存在重命名加上日期
[ -f "$accountfile" ] && mv $accountfile "$accountfile"$(date +%Y%m%d%s)
nu_end=$(($nu_start+$nu_amount-1))
for((i=$nu_start; i<=$nu_end; i++))
do
#${i} 统计数字i的长度
nu_len=${#i}
if [ $nu_nu -lt $nu_len ]; then
echo "输入不合理,编号位数不足或帐号数量过多!"
echo "please check it out"
exit 1
fi
#需要在编号前面补零的位数
nu_diff=$(($nu_nu - $nu_len))
nu_nn=""
if [ "$nu_diff" != "0" ]; then
nu_nn=0000000000
nu_nn=${nu_nn:1:$nu_diff}
fi
#将以上信息年级,班级,序号拼接起来组成一个帐号
account=${username_grade}${username_class}${nu_nn}${i}
password="$account"
#帐号密码写入文件
echo 帐号:"$account":密码:"$password" | tee -a "$accountfile"
done
#新建帐号密码
usernames=$(cat "$accountfile" | cut -d':' -f2)
for u in $usernames
do
useradd $u
echo $u | passwd --stdin $u
#强制登录修改密码
chage -d 0 $u
done
echo "Ok! 新建$nu_amount个账户."
二.从刚才保存的文件批量删除刚才创建的帐号
手残建错了怎么办,批量删除刚才的帐号
#!/bin/bash
# to del the user from file
usernames=$(cat user.passwd | cut -d':' -f2)
for username in $usernames
do
echo "删除用户$username"
userdel -r $username
done
附上鸟哥书上提供的原版地址http://linux.vbird.org/linux_basic/0410accountmanager/account2.sh 我没有重复造轮子,我只是在练习。