¿Cómo puedo agregar más nombres de usuario y contraseñas aquí?

¿Cómo puedo agregar más nombres de usuario y contraseñas aquí?

El contenido dentro del archivo bash se ofuscará

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

Respuesta1

Uno de los comentarios dice:

Cree un archivo de texto con nombres de usuario y contraseñas. Y mediante bucle compruébelos desde el archivo.

Es una idea decente. El código puede ser así:

#!/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

Ejemplo /the/file:

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

Todo lo que está después del primer espacio en una línea es la contraseña.

Notas:

  • Esto podría hacerse sin una función. La función es bastante útil aquí debido a su capacidad para return 0(tener éxito) desde la mitad del ciclo sin lógica adicional.
  • Una línea vacía significa inicio de sesión vacío y contraseña vacía. Tenga en cuenta que en *nix cada línea de un archivo de texto debe terminar con un carácter de nueva línea, por lo que un carácter de nueva línea al final del archivo no significa que haya una línea vacía después. Aun así, es bastante fácil poner una línea realmente vacía al final, así que presta atención. Alternativamente, puede agregar algo de lógica a la función para que nunca se acepte un inicio de sesión vacío.
  • Para ejecutar este código sin errores, necesita tener acceso de lectura a /the/file. Pero si lo hace, puede simplemente leer el archivo y conocer todos los secretos. No arreglaré esto aquí. Almacenar contraseñas de forma segura está más allá del alcance de la pregunta.
  • Si prefiere incrustar contraseñas en el archivo shell, utiliceaquí documento. En lugar de done </the/filehacer me gusta:

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

    Tenga en cuenta que citar el primero EOFes importante. Sin ello $$se ampliaría.

información relacionada