Как мне добавить сюда больше имен пользователей и паролей?

Как мне добавить сюда больше имен пользователей и паролей?

Содержимое файла 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. Но если у вас есть доступ, вы можете просто прочитать файл и узнать все секреты. Я не буду это здесь исправлять. Хранение паролей в безопасном режиме выходит за рамки вопроса.
  • Если вы предпочитаете встраивать пароли в сам файл оболочки, то используйтездесь документ. Вместо того, чтобы done </the/fileделать как:

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

    Примечание: цитирование первого EOFважно. Без него $$было бы расширено.

Связанный контент