$userのアカウントにパスワードが設定されていることを確認する必要があるスクリプトを作成しています。どうすればいいですか?
私はこれを知っています:
passwd --status username
アカウントステータス情報を表示します。ステータス情報は7つのフィールドで構成されています。最初のフィールドはユーザーのログイン名です。 2番目のフィールドは、ユーザーアカウントにロックされたパスワード(L)があるか、パスワードがないか(NP)、使用可能なパスワードがあるか(P)を示します。 3番目のフィールドには、最後のパスワード変更日が表示されます。次の4つのフィールドは、パスワードの最小期間、最大期間、警告期間、および非アクティブ期間です。この年齢は日単位で表示されます。
しかし、適応できるものが必要です。if test
コードは次のとおりです。
userPass()
{
for i in "#@"
do
if [ "$i" = root ]
then
continue
else
echo "Changing password for $i:"
echo $i:$i"YOURSTRONGPASSWORDHERE" | chpasswd
if [ "$?" = 0 ]
then
echo "Password for user $i changed successfully"
fi
fi
done
}
userPass $1 $2 $3
答え1
の出力は、passwd --status
ユーザーにパスワードがないか(「パスワードがない(NP)」)かを示すため、次のことが確認できます。
if [[ $(passwd --status "$i" | awk '{print $2}') = NP ]]
then
echo "$i doesn't have a password."
fi
または:
case $(passwd --status "$i" | awk '{print $2}') in
NP) echo "$i doesn't have a password."
# set password here.
;;
L) echo "$i's account is locked." ;;
P) echo "$i has a password." ;;
esac
答え2
どうですか?
if [ `passwd -S ${i} | cut -d" " -f2` == "P" ]; then do some stuff; fi
答え3
/etc/password
アクセス権があればチェックインもできます。
if [ `awk -F ':' '/^'$i':/ {print $2}' /etc/shadow` ] ; then
echo "User has passwd" ;
else
echo "NO passwd";
fi