在 linux用户名和用户组的操作笔记 中,我介绍了如何通过命令行新建用户
但是,事实上,学院又很多很多很多学生和老师,我不可能一个个为它们新建用户,最好有一个脚本可以实现批量新建用户
本文参考 Linux下批量添加用户的两种方法
其实我本人根本不会用shell脚本,只会一点点linux的指令
本着拿来主义的精神,原作者写的脚本我修修改改就拿来用了
先上代码 test_user_add.sh
for username in $(more users.list)
do
if [ -n $username ]
then
useradd -d /home/$username -s /bin/bash -m $username
echo
# echo $ username"123" | paswd --stdin $username
echo "$username:123456" | chpasswd
echo
echo "User $username's password has been changed!"
else
echo "The username is null!"
fi
done
原文中的--stdin,在Ubuntu下无法使用
echo $ username"123" | paswd --stdin $username
需要修改为
echo "$username:123456" | chpasswd
这段代码中,我们将用户名设定为users.list文件中的用户名,默认密码设定为123456
如果你是在win下编辑test_user_add.sh,并通过scp复制到Ubuntu,可能会出现以下报错
./test_user_add.sh: line 2: syntax error near unexpected token `$'do\r''
'/test_user_add.sh: line 2: `do
具体原因是不同系统回车符不同
unix下: <LF> :/n
windows下: <CR><LF> :/r/n
mac下: <CR> :/r
你可以在linux通过vim将回车都换一遍,也可以把win下的编辑器改成linux格式
再根据需要建立一个users.list文件,存入需要新建的用户
gao***bin
quan***ming
liu***yi
chen***tian
每个用户之间用回车隔开,注意回车的格式需要是linux中的格式
具体的文件放在GitHub上了
可自行下载
顺便改了一个批量删除的脚本
for username in $(more user_del.list)
do
if [ -n $username ]
then
deluser --remove-home $username # 删除用户的主目录和邮箱
# deluser --remove-all-files $username # 删除用户拥有的所有文件
echo
echo "User $username has been deleted!"
else
echo "The username is null!"
fi
done