소개
이 프로젝트에서는 특정 보안 요구 사항을 충족하는 무작위 비밀번호 생성 스크립트를 만드는 방법을 배우게 됩니다. 이 스크립트는 숫자 1 개 이상, 대문자 1 개 이상, 소문자 1 개 이상, 그리고 ><+-{}:.&; 세트에서 특수 문자 1 개 이상을 포함하는 12 자 비밀번호를 생성합니다. 이 프로젝트는 스크립팅 및 무작위 데이터 작업에 대한 실질적인 경험을 제공합니다.
👀 미리보기
$ cd /home/labex/project
$ sh genpass.sh
## Example
2Dsxw9+xS:27
🎯 과제
이 프로젝트에서는 다음을 수행합니다.
- 프로젝트 환경을 설정하고 필요한 스크립트 파일을 생성합니다.
- 지정된 복잡성 요구 사항을 충족하는 무작위 비밀번호를 생성하는 로직을 구현합니다.
- 비밀번호 생성 스크립트가 올바르게 작동하는지 테스트합니다.
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다.
- 무작위 비밀번호 생성 스크립트를 만드는 과정을 이해합니다.
- 특정 문자 유형 요구 사항을 충족하는 비밀번호 생성 알고리즘을 구현합니다.
- 생성된 비밀번호가 원하는 기준을 충족하는지 테스트하고 검증합니다.
프로젝트 환경 설정
이 단계에서는 작업 환경을 준비하고 비밀번호 생성 스크립트에 필요한 파일을 생성합니다.
터미널을 열고
cd명령을 사용하여/home/labex/project디렉토리로 이동합니다.cd /home/labex/projecttouch명령을 사용하여genpass.sh라는 새 파일을 생성합니다. 이 파일은 비밀번호 생성 스크립트를 작성할 파일입니다.touch genpass.sh텍스트 편집기에서
genpass.sh파일을 엽니다.nano,vim또는 선호하는 텍스트 편집기를 사용할 수 있습니다. 파일 맨 처음에 다음 shebang 라인을 추가합니다.#!/bin/zsh ## Random Password Generator ## This script generates a random password that meets the specified requirements.이 라인은 시스템에 zsh 쉘을 사용하여 스크립트를 실행하도록 지시합니다. shebang 라인 뒤의 주석은 스크립트에 대한 간략한 설명을 제공합니다.
비밀번호 생성 로직 구현
이 단계에서는 복잡성 요구 사항을 충족하는 무작위 비밀번호를 생성하기 위해 genpass.sh 스크립트에 핵심 로직을 추가합니다.
genpass.sh파일 내에 다음 함수를 추가하여 비밀번호를 생성합니다.## Function to generate a random password generate_password() { local length=12 local password='' ## Special characters local special_chars='><+-{}:.&;' local special_char="${special_chars:$RANDOM%${#special_chars}:1}" password+="$special_char" ## Digits local digits='0123456789' local digit="${digits:$RANDOM%${#digits}:1}" password+="$digit" ## Uppercase letters local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ' local upper="${upper_case:$RANDOM%${#upper_case}:1}" password+="$upper" ## Lowercase letters local lower_case='abcdefghijklmnopqrstuvwxyz' local lower="${lower_case:$RANDOM%${#lower_case}:1}" password+="$lower" ## Remaining characters local remaining_length=$((length - 4)) local characters='><+-{}:.&;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' local num_characters=${#characters} for ((i = 0; i < remaining_length; i++)); do local random_char="${characters:$RANDOM%$num_characters:1}" password+="$random_char" done ## Shuffle the order of password characters password=$(echo "$password" | fold -w1 | shuf | tr -d '\n') echo "$password" }이 함수는 다음과 같이 작동합니다.
- 기본 기준을 충족하기 위해 특수 문자 1 개, 숫자 1 개, 대문자 1 개, 소문자 1 개로 비밀번호를 초기화합니다.
- 원하는 길이인 12 자에 도달하기 위해 남은 문자 수를 계산합니다.
- 숫자, 문자 (대문자 및 소문자 모두) 및 특수 문자의 풀에서 나머지 문자를 무작위로 선택합니다.
- 특정 문자가 항상 처음에 오지 않도록 비밀번호를 섞습니다.
genpass.sh파일의 끝에 다음 코드를 추가합니다. 이 스크립트 부분은generate_password함수를 호출하고 생성된 비밀번호를 콘솔에 출력합니다.## Generate password and output generate_password
비밀번호 생성기 테스트
이 단계에서는 genpass.sh 스크립트를 테스트하여 모든 요구 사항을 충족하는 비밀번호를 생성하는지 확인합니다.
텍스트 편집기에서
genpass.sh파일을 저장합니다.터미널에서
chmod명령을 사용하여 스크립트를 실행 가능하게 만듭니다.chmod +x genpass.sh이 명령은 파일에 실행 권한을 추가하여 프로그램으로 실행할 수 있도록 합니다.
다음 명령을 사용하여 스크립트를 실행합니다.
sh genpass.sh스크립트는 무작위 12 자 비밀번호를 콘솔에 출력해야 합니다. 출력에는 최소 하나의 특수 문자, 하나의 숫자, 하나의 대문자 및 하나의 소문자가 포함되어야 합니다.
## Example 2Dsxw9+xS:27스크립트를 몇 번 더 실행합니다. 매번 다른 비밀번호가 생성되어야 합니다. 이는 비밀번호 생성기의 무작위성이 올바르게 작동하는지 확인합니다.
축하합니다! 지정된 복잡성 요구 사항을 충족하는 무작위 비밀번호 생성기를 성공적으로 구현하고 테스트했습니다.
요약
축하합니다! 이 프로젝트를 완료하고 무작위 비밀번호 생성기 스크립트를 만들었습니다. 이제 향후 스크립팅 프로젝트를 위한 기반을 갖추게 되었습니다.
LabEx 에서 더 많은 랩을 통해 계속 연습하여 기술을 더욱 향상시킬 수 있습니다.



