ここにユーザー名とパスワードをさらに追加するにはどうすればよいですか?

ここにユーザー名とパスワードをさらに追加するにはどうすればよいですか?

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

コメントの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。ただし、読み取りアクセス権があれば、ファイルを読み取ってすべての秘密を知ることができます。ここではこれを修正しません。パスワードを安全な方法で保存することは、質問の範囲を超えています。
  • シェルファイル自体にパスワードを埋め込む場合は、ここに文書次のようにする代わりにdone </the/file:

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

    最初の引用はEOF重要です。これがないと、$$拡張されてしまいます。

関連情報