我有一个交互式bash脚本,首先询问用户名,然后询问密码,然后再次确认密码。 (它在我们的ERP系统中创建用户而不是在Ubuntu中)
我有一个包含1000多个用户的CSV和随机生成的密码,所以我必须创建所有这些用户。我想编写一个脚本,从CSV中选择用户,然后在被要求输入密码时,它会从CSV传递密码以创建用户。以下是我所做的,但它没有按预期工作:
while IFS=,
read -a csv_line; do
createusr ${csv_line[0]}:${csv_line[1]}:${csv_line[1]};done < Desktop/Passwoerter.csv
它给出了密码不匹配的错误! 个人用户的实际脚本如下:
~$ createuser xyz <press Enter>
password for xyz: whatever <press enter>
confirm password for xyz whatever <enter again>
~$
它不是:
~$ createuser xyz whatever whatever <press enter>
~$
如果我一个一个地添加但是有1000多个,那么我正在尝试使用CSV上的小脚本。
答案 0 :(得分:1)
第一个选项:使用newusers
:它是passwd
包的一部分。
DESCRIPTION
The newusers command reads a file (or the standard input by default)
and uses this information to update a set of existing users or to
create new users. Each line is in the same format as the standard
password file.
输入文件格式:
username:passwd:UID:GID:full name,room number,work phone,home phone,other:directory:shell
如您所见,文件中提供了password
。
下行,您需要使用提供的格式将csv转换为txt。
newusers < file.txt
第二个选项:您可以useradd
使用-p
切换。
useradd -m -p $(mkpasswd "password") username
-m
如果用户的主目录不存在,请创建该目录。
-p
加密密码,由crypt(3)返回。
答案 1 :(得分:0)
我找到了我需要的东西,我的脚本看起来像:
while IFS=# read -a csv_line
do
printf "%s\n%s\n" ${csv_line[1]} ${csv_line[1]} | createuser ${csv_line[0]}
done
并执行如下:
./insertalluser < Desktop/Passwoerter.csv