ユーザー用のランダムパスを作成してファイルに保存します。

ユーザー用のランダムパスを作成してファイルに保存します。

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

コマンド置換の戻り値はサブシェルのstdoutです。

lol次の行では、出力をサブシェルのファイルにリダイレクトしました。したがって、変数に保存する戻り値はありませんpass

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

次の行は、次のように2つの部分に分割できます。

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)

おすすめ記事