O conteúdo dentro do arquivo bash será ofuscado
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
Responder1
Um dos comentários diz:
Crie um arquivo de texto com nomes de usuário e senhas. E via loop verifique-os no arquivo.
É uma ideia decente. O código pode ser assim:
#!/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
Exemplo /the/file
:
kamil foo
joe bar
anotherUser pa$$word
bill password that contains spaces
Tudo após o primeiro espaço de uma linha é a senha.
Notas:
- Isso poderia ser feito sem uma função. A função é bastante útil aqui devido à sua capacidade de
return 0
(sucesso) a partir do meio do loop sem lógica adicional. - Uma linha vazia significa login vazio e senha vazia. Observe que em *nix cada linha em um arquivo de texto deve terminar com um caractere de nova linha, portanto, um caractere de nova linha no final do arquivo não significa que haja uma linha vazia depois dele. Ainda assim, é muito fácil colocar uma linha verdadeiramente vazia no final, então preste atenção. Alternativamente, você pode adicionar alguma lógica à função para que o login vazio nunca seja aceito.
- Para executar esse código sem erros, você precisa ter acesso de leitura ao
/the/file
. Mas se você fizer isso, basta ler o arquivo e conhecer todos os segredos. Não vou consertar isso aqui. Armazenar senhas de maneira segura está além do escopo da questão. Se você preferir incorporar senhas no próprio arquivo shell, useaqui documento. Em vez de
done </the/file
fazer como:done <<'EOF' kamil foo joe bar anotherUser pa$$word bill password that contains spaces EOF
Observe que citar o primeiro
EOF
é importante. Sem ele$$
seria ampliado.