여기에 사용자 이름과 비밀번호를 어떻게 더 추가할 수 있나요?

여기에 사용자 이름과 비밀번호를 어떻게 더 추가할 수 있나요?

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중요합니다. 그것이 없으면 $$확장될 것이다.

관련 정보