既存のすべてのユーザーにランダムなパスワードを割り当てる

既存のすべてのユーザーにランダムなパスワードを割り当てる

/etc/passwdファイルからユーザー(最初の列)を特定し、それらにパスワードを割り当てたいです。デフォルトのシステムアカウントではなく、ユーザーアカウントに対してのみこれを実行したいと思います。これまでに単純なbashスクリプトがあります。

#!/bin/bash
touch /usertempfile
grep "/home" /etc/passwd |grep -v "/bin/false"|grep -v "/sbin/nologin"|grep -v $USER |awk -F":" '{print $1}' >> /userstempfile
for i in $(cat /usertempfile); do
    echo -e "password/npassword" |passwd $i
done
rm -rf /usertempfile

スクリプトは/etc/passwdファイルからデフォルト以外のシステムアカウントのユーザーを抽出できますが、ファイル内のユーザーのパスワードを変更することはできません。私は何が間違っていましたか?

答え1

私のスクリプトでこれを使用すると、chpasswd私にはうまくいきます。

echo "$USERNAME:$NEWPASSWORD" | chpasswd

PS:root以外のユーザーがsudo以前に使用するのに適しています。chpasswd

echo "$USERNAME:$NEWPASSWORD" | sudo chpasswd

関連情報