尝试为用户生成随机通行证并将其保存在文件中

尝试为用户生成随机通行证并将其保存在文件中

我正在尝试生成由 bash 脚本中的文本文件创建的用户的随机密码,然后将这些密码保存到文本文件中。这就是我正在做的事情。

它工作正常,从文本文件创建用户并将密码也输出到 lol 文件,但创建的用户的密码不起作用。

这是我的代码,任何有关此的帮助将不胜感激。

while read line || [ -n "$line" ] # protect against no newline for last line

do name=$line
pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 >> lol)

sudo useradd $name -m
sudo usermod -p $(echo $pass | openssl passwd -1 -stdin) $name

echo "The user - $name - has been created!"

done < "$fname" # double-quote fname echo

答案1

命令替换的返回值是子shell的stdout。

在下面的行中,您已将输出重定向到lol子 shell 中的文件。因此,您没有返回值可以存储在变量中pass

pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 >> lol)

您可以将以下行分成两部分,如下所示:

pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1)
echo "$pass" >> lol

或者使用tee -a

pass=$(cat /dev/urandom| tr -dc 'a-zA-Z0-9' | fold -w 8| head -n 1 | tee -a lol)

相关内容