交互式Bash脚本
我有一个交互式bash脚本,它首先要求输入用户名,然后要求输入密码,然后再次确认密码。(它在我们的ERP系统中创建用户,而不是在Ubuntu中创建用户) 我有1000多个用户的CSV和随机生成的密码,所以我必须创建所有这些用户。我想写一个脚本,从CSV中选择用户,然后当要求输入密码时,它会从CSV中传递密码以创建用户。以下是我所做的,但它没有按预期工作:交互式Bash脚本,bash,Bash,我有一个交互式bash脚本,它首先要求输入用户名,然后要求输入密码,然后再次确认密码。(它在我们的ERP系统中创建用户,而不是在Ubuntu中创建用户) 我有1000多个用户的CSV和随机生成的密码,所以我必须创建所有这些用户。我想写一个脚本,从CSV中选择用户,然后当要求输入密码时,它会从CSV中传递密码以创建用户。以下是我所做的,但它没有按预期工作: while IFS=, read -a csv_line; do createusr ${csv_line[0]}:${csv_line[
while IFS=,
read -a csv_line; do
createusr ${csv_line[0]}:${csv_line[1]}:${csv_line[1]};done < Desktop/Passwoerter.csv
当IFS=,
读取-csv_行;做
createusr${csv_行[0]}:${csv_行[1]}:${csv_行[1]};完成
它给出了密码不匹配的错误!
单个用户的实际脚本的工作方式如下:
~$ createuser xyz <press Enter>
password for xyz: whatever <press enter>
confirm password for xyz whatever <enter again>
~$
~$createuser xyz
xyz的密码:随便
确认xyz的密码
~$
它不是:
~$ createuser xyz whatever whatever <press enter>
~$
~$createuser xyz无论什么
~$
如果我一个接一个地添加,效果很好,但是有1000多个,所以我尝试在CSV上使用一个小脚本。第一个选项:使用
新用户
:它是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
如您所见,文件中提供了密码
缺点是,您需要使用提供的格式将csv转换为txt
newusers < file.txt
-m
如果用户的主目录不存在,则创建该目录
-p
加密密码,由crypt(3)返回。我找到了我需要的,我的脚本如下所示:
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
/insertalluser
否,我有一个脚本来创建这些用户,因为这些用户是ERP的一部分,可以点击数据库中的各个表,并且已经存在的脚本创建用户并将所需信息保存在数据库中的各个表中,因此我只能使用此脚本来创建用户。这将创建相同的用户,您只需将您的csv
转换为提供的格式,或者使用第二个选项,并在变量中提供值。我必须为我们的ERP创建用户,而不是为ubuntu创建用户,所以第一个脚本一次只创建一个
./insertalluser < Desktop/Passwoerter.csv