소개
이 챌린지에서는 서버에서 사용자를 일괄 추가 및 삭제하는 bash 스크립트인 userctr.sh를 작성합니다. 작업 (add 또는 del), 선생님 사용자 이름, 학생 사용자 이름 접두사, 관리할 학생 수를 지정하는 명령줄 인수를 받는 스크립트를 작성하게 됩니다. 이 작업은 시스템 관리에 필수적인 쉘 스크립팅, 사용자 관리 및 자동화 기술을 향상시킬 것입니다.
사용자 및 그룹 생성 및 삭제 일괄 처리
시스템 관리자는 교실 서버에 선생님 한 명과 여러 학생 사용자를 효율적으로 추가할 수 있는 방법이 필요합니다. 각 계정을 수동으로 생성하는 것은 지루하고 오류가 발생하기 쉽습니다. 이 작업에서는 이 프로세스를 자동화하는 bash 스크립트인 userctr.sh를 작성합니다. 스크립트는 작업 유형, 선생님 이름, 학생 이름 접두사 및 학생 수를 매개변수로 받습니다.
작업
/home/labex/project디렉토리에userctr.sh라는 Bash 스크립트를 생성합니다.- 스크립트는 첫 번째 명령줄 인수에 의해 결정되는
add및del의 두 가지 주요 작업을 구현해야 합니다. add작업의 경우 선생님 사용자 한 명과 지정된 수의 학생 사용자를 생성합니다.del작업의 경우 지정된 선생님 및 학생 사용자를 삭제합니다.- 스크립트는 아래 요구 사항에 따라 모든 입력 매개변수를 검증해야 합니다.
요구 사항
실행 형식: 스크립트는 네 개의 인수로 실행 가능해야 합니다.
sh userctr.sh <operation> <teacher_name> <student_prefix> <student_count>매개변수 검증:
- 스크립트는 정확히 네 개의 인수를 받아야 합니다. 그렇지 않으면
parameter error를 출력하고 종료해야 합니다. student_count(네 번째 인수) 는 1 에서 10 사이의 정수여야 합니다. 그렇지 않으면parameter error를 출력하고 종료해야 합니다.student_prefix(세 번째 인수) 는 소문자만 포함해야 합니다. 그렇지 않으면parameter error를 출력하고 종료해야 합니다.
- 스크립트는 정확히 네 개의 인수를 받아야 합니다. 그렇지 않으면
add작업 세부 정보:- 추가할 사용자가 이미 존재하는 경우, 생성하려고 시도하지 마십시오. 대신 해당 사용자 이름을 출력하고 뒤에
******를 붙입니다 (예:stu3:******). - 새 사용자의 경우 무작위 6 자리 숫자 비밀번호를 생성합니다.
- 새로 생성된 각 사용자에 대해 사용자 이름과 비밀번호를 콜론으로 구분하여 출력합니다 (예:
teacher:901231). - 생성된 모든 사용자는 기본 쉘로
/bin/zsh를 사용해야 합니다. - 선생님 사용자는 관리자 권한을 부여하기 위해
sudo그룹에 추가되어야 합니다.
- 추가할 사용자가 이미 존재하는 경우, 생성하려고 시도하지 마십시오. 대신 해당 사용자 이름을 출력하고 뒤에
del작업 세부 정보:- 스크립트는 지정된 선생님 및 학생 사용자를 홈 디렉토리를 포함하여 삭제해야 합니다.
del작업은 출력을 생성하지 않아야 합니다.- 삭제할 사용자가 존재하지 않는 경우, 스크립트는 오류를 보고하지 않고 다른 기존 사용자를 삭제하는 작업을 계속해야 합니다.
예시
다음 예시는 스크립트의 예상 동작을 보여줍니다.
사용자 추가: 이 명령은 선생님 한 명 (
teacher) 과 학생 여섯 명 (stu1부터stu6까지) 을 추가합니다.sh userctr.sh add teacher stu 6예시 출력:
teacher:901231 stu1:271828 stu2:928172 stu3:****** stu4:384712 stu5:098273 stu6:921098이 출력에서
stu3의 별표는 해당 사용자가 이미 존재했음을 나타내므로 새 비밀번호가 생성되지 않았습니다.사용자 삭제: 이 명령은 동일한 사용자 세트를 삭제합니다. 성공적으로 완료되면 출력이 없어야 합니다.
sh userctr.sh del teacher stu 6
힌트
useradd및userdel과 같이 루트 권한이 필요한 명령 앞에sudo를 사용하십시오.$#로 인수의 수를 확인하십시오.$1,$2등을 사용하여 인수에 접근하십시오.- 사용자가 존재하는지 확인하려면
id -u <username>을 사용할 수 있습니다. 사용자가 존재하지 않으면 이 명령은 0 이 아닌 종료 코드를 갖습니다. - 홈 디렉토리를 생성하고 Zsh 쉘을 설정하려면
useradd -m -s /bin/zsh <username>을 사용하십시오. - 사용자를
sudo그룹에 추가하려면usermod -aG sudo <username>을 사용하십시오. - 사용자와 해당 홈 디렉토리를 삭제하려면
userdel -r <username>을 사용하십시오. - 무작위 6 자리 숫자를 생성하려면
shuf -i 100000-999999 -n 1을 사용할 수 있습니다. - 학생 수를 반복하려면
for ((i=1; i<=$student_count; i++))와 같은for루프가 유용합니다. - 매개변수를 검증하기 위해 패턴 일치에는
if [[ "$string" =~ "regex" ]]를 사용하십시오.
요약
축하합니다! 사용자 관리를 자동화하는 bash 스크립트를 성공적으로 작성했습니다. 이 스크립트는 사용자를 일괄적으로 추가 및 삭제하고, 입력 매개변수를 검증하며, 기존 사용자를 처리할 수 있어 모든 시스템 관리자에게 필수적인 기술입니다. 스크립트 내에서 조건문, 루프, 명령줄 인수 및 useradd, userdel과 같은 외부 명령을 사용하는 연습을 했습니다.



