Bash
檢查使用者是否在腳本中為其帳戶設置了密碼
我正在編寫一個腳本,如果他的帳戶設置了密碼,需要檢查 $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