linux新建用户方法主要有两种:
adduser
useradd
adduser 可以按照提示一步步的创建用户。
useradd则完全由用户指定主目录,bash目录等位置。
详细介绍可参考:https://www.linuxidc.com/Linux/2017-02/140793.htm
由于adduser是linux一步步提示完成的,不利于批量处理,因此本方法使用的是useradd。
代码如下:
#!/bin/bash
for i in {1..20}
do
username=test$i;
echo $username;
if [ -n $username ]
then
sudo useradd -d /home/$username -s /bin/bash -m $username
echo $username:$username | sudo chpasswd
echo "user $username added!"
else
echo "the username is null!"
fi
done
在写的时候遇到的主要问题有以下几个:
1,for循环不能迭代输出,主要是运行方法不对。需要
bash xxx.sh
2,不能通过
echo $2 | passwd --stdin $1
设置密码,否则会报 passwd: unrecognized option '--stdin' 的错误。主要原因是ubuntu不支持--stdin的选项。因此,只能使用
echo $username:$username | sudo chpasswd
设置密码。
3,登陆后用户名只出现 $,原因是未设置 shell版本和用户登录主目录,因此
sudo useradd -d /home/$username -s /bin/bash -m $username
此句中的 -d 和 -s必不能省,分别用来设置用户目录和bash位置。
4,如果在/etc/profile里面设置了环境变量,则需要在各个目录下面执行一遍
source /etc/profile
使环境变量生效。
最后,此程序实现的功能是:
添加20个用户,并将用户名和密码设置为相同的 testx;如果想将用户密码设为其他值,则修改
echo $username:$username | sudo chpasswd
这一行中的第二个 $username为其他值即可。