Bash

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

  • August 29, 2018

我正在編寫一個腳本,如果他的帳戶設置了密碼,需要檢查 $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

怎麼樣:

if [ `passwd -S ${i} | cut -d" " -f2` == "P" ]; then do some stuff; fi

由於 的輸出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

引用自:https://unix.stackexchange.com/questions/465436