如何在此處新增更多使用者名稱和密碼?

如何在此處新增更多使用者名稱和密碼?

bash 文件內的內容將會被混淆

echo "Enter The Login Name:"
read username
echo "Enter The Password:"
read password

if [[ $username == "user"  && $password == "password" ]]
then
  echo -e "You're Logged In\n"
elif [ $username != "user" ] 
then
  echo -e "Invalid User Name\n"
else
  echo -e "Invalid Password\n"
fi

答案1

其中一則評論說:

建立包含使用者名稱和密碼的文字檔案。並透過循環從文件中檢查它們。

這是一個不錯的主意。程式碼可能是這樣的:

#!/bin/bash

function validate {
    local user pass
    while IFS=' ' read -r user pass; do
       [ "$1" = "$user" ] && [ "$2" = "$pass" ] && return 0
    done </the/file
    return 1
}

read -rp "Login: " u
read -rsp "Password: " p

echo
if validate "$u" "$p"; then
   echo "Access granted."
else
   echo "Access denied."
fi

例子/the/file

kamil foo
joe bar
anotherUser pa$$word
bill password that contains spaces

一行中第一個空格之後的所有內容都是密碼。

筆記:

  • 這可以在沒有函數的情況下完成。函數在這裡非常有用,因為它能夠return 0從循環中間(成功)而無需額外的邏輯。
  • 空白行意味著空登入名稱和空密碼。請注意,在 *nix 中,文字檔案中的每一行都應以換行符號結尾,因此檔案結尾的換行符號並不表示後面有一個空白行。不過,很容易在末尾放置一個真正的空行,因此請注意。或者,您可以向該函數添加一些邏輯,這樣空登入將永遠不會被接受。
  • 要正確運行此程式碼,您需要具有/the/file.但如果你這樣做了,你只需閱讀該文件就可以知道所有秘密。我不會在這裡解決這個問題。以安全的方式儲存密碼超出了問題的範圍。
  • 如果您希望將密碼嵌入到 shell 檔案本身中,那麼可以使用這裡的文檔。而不是done </the/file這樣做:

       done <<'EOF'
    kamil foo
    joe bar
    anotherUser pa$$word
    bill password that contains spaces
    EOF
    

    請注意引用第一個EOF很重要。沒有它$$就會擴大。

相關內容