檢查用戶是否在腳本中為其帳戶設定了密碼

檢查用戶是否在腳本中為其帳戶設定了密碼

我正在編寫一個腳本,需要檢查 $user 的帳戶是否設定了密碼,我該怎麼做?

我知道這個:

passwd --status username

顯示帳戶狀態資訊。狀態資訊由7個欄位組成。第一個欄位是使用者的登入名稱。第二個欄位指示使用者帳戶是否具有鎖定密碼 (L)、沒有密碼 (NP) 或具有可用密碼 (P)。第三個欄位給出最後一次密碼更改的日期。接下來的四個欄位是密碼的最短期限、最長期限、警告期限和不活動期限。這些年齡以天數表示。

但我需要一些可以適應的東西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顯示使用者是否沒有密碼(“has no password (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

相關內容