input.csv文件内容:作为批量化创建账号的信息存放文档
wang@wang-PC:~/test$ cat input.csv
1001,test1,1001,test,/home/test1,123456
1002,test2,1001,test,/home/test2,123456
1003,test3,1001,test,/home/test3,123456
#!/bin/bash
#
input="input.csv"
while IFS=',' read -r uid username gid groupname home password
do
# echo "$uid" "$username" "$gid" "$groupname" "$home" "$password"
echo "开始创建用户: $username"
# 进行UID判断,用户判断,GID判断,组名判断,home判断
# 如果上述判断均为not exist,则可以使用完整命令创建用户
# 命令为两条:① 创建组:groupadd -g $gid $groupname
#② 创建用户,密码,及家目录:useradd -u $uid -g $gid -s /bin/bash -m -d $home $username
#③ 创建密码:echo $password| passwd --stdin $username
# 如果组名称已存在,显示组已存在,判断GID是否与文档要求一样,一样可直接创建用户,不一样则不创建用户提示GID exits,but GID is inconsistent!
# 判断家目录是否存在,如果不存在可创建用户,如果存在则继续判断家目录是否有文件,没有则可创建用户,有则提示:home directory exits and is not NULL!
# 用户创建成功后提示用户$username 已创建,密码设置成功提示:$username秘钥以分发;
#--------------------------------------------------------------------------------
#判断上述都不存在的情况;
if (( awk -F : '{print $3}' /etc/group|grep -w "$gid" >/dev/null 2>&1 ) && ( ! awk -F : '{print $1}' /etc/group|grep -w "$groupname" >/dev/null 2>&1)) \
|| (( awk -F : '{print $1}' /etc/group|grep -w "$groupname" >/dev/null 2>&1) && ( ! awk -F : '{print $3}' /etc/group|grep -w "$gid" >/dev/null 2>&1))
then
echo -e "\033[5;31m 警告:组($groupname) 或 GID($gid) 已经存在,且与要求不一致,请检查! \033[0m"
echo -e "\033[5;34m ERROR:用户 $username 不能被创建! \033[0m"
elif (! awk -F : '{print $1}' /etc/group|grep -w "$groupname" >/dev/null 2>&1) &&(! awk -F : '{print $2}' /etc/group|grep -w "$gid" >/dev/null 2>&1)
then
sudo groupadd -g $gid $groupname
if (! id $username >/dev/null 2>&1) && (! awk -F : '{print $3}' /etc/passwd |grep -w "$uid" >/dev/null 2>&1)
then
if [ -d $home ]&& (ls -A $home >/dev/null 2>&1)
then
echo -e "\033[5;31m 警告:家目录$home已存在,且不为空,请检查目录! \033[0m"
else
useradd -u $uid -g $gid -s /bin/bash -m -d $home $username
# grep "$password"|passwd --stdin $username
#grep "$password"|passwd --stdin $username
echo $username:$password |`sudo chpasswd`
echo "$username 创建成功,密码已分发!"
fi
else
echo -e "\033[5;31m 警告:用户名 $username 或UID $uid 已存在,请检查! \033[0m"
echo -e "\033[5;34m ERROR:用户 $username 不能被创建! \033[0m"
fi
else
if (! id $username >/dev/null 2>&1) && (! awk -F : '{print $3}' /etc/passwd |grep -w "$uid" >/dev/null 2>&1 )
then
if [ -d $home ] && (ls -A $home >/dev/null 2>&1)
then
echo -e "\033[5;31m 警告:家目录$home已存在,且不为空,请检查目录! \033[0m"
else
useradd -u $uid -g $gid -s /bin/bash -m -d $home $username
#grep "$password"|passwd --stdin $username
echo $username:$password |`sudo chpasswd`
echo "$username 创建成功,密码已分发!"
echo "$username 用户已创建成功,密码已分发。"
fi
else
echo "警告:用户名 $username 或UID $uid 已存在,请检查!"
fi
fi
done < "$input"