상세 컨텐츠

본문 제목

Shell Script : 계정 일괄 생성/삭제 프로그램

리눅스(Linux)

by 주스로그 2024. 3. 21. 12:30

본문

728x90
반응형
시나리오: 계정을 자동으로 일괄 생성/삭제 할 수 있는 프로그램을 만들자
계정 명과 그 개수를 입력받아 지정받은 만큼 계정을 생성하고, 삭제할 수 있도록 한다.

 

순차적으로 코드를 구성해보자

1) 3가지 선택 사항 중 메뉴를 입력받는다.

 echo "1. 계정 일괄 생성"
 echo "2. 계정 일괄 삭제"
 echo "3. 종료"
 read -p "메뉴를 선택하세요(1~3): "

 

**

read -p 옵션으로 입력을 받게 되면 자동적으로 REPLY라는 이름의 변수로 입력받는다.

 

2) 계정을 생성하는지, 삭제하는지 입력받은 값에 따른 조건문을 만든다.

if [ $REPLY -eq 1 ];then
        echo -n "생성할 계정명: ";read Aname
        echo -n "생성할 개수: ";read Acount

elif [ $REPLY -eq 2 ];then
        echo -n "삭제할 계정명: ";read Dname
        echo -n "삭제할 개수: ";read Dcount
fi

REPLY의 값 = 1일때 계정을 생성할 수 있도록,

REPLY의 값 = 2일때 계정을 삭제 할 수 있도록 한다.

각각의 변수는 Add, Del의 약자로 설정해 어떤 변수인지 알 수 있도록 지정!

 

3) case문을 통해 각각의 입력받은 것에 따른 결과를 출력한다

case $REPLY in

  1)
        for (( i=1 ; i<=$Acount ; i++ ))
        do
                useradd $Aname$i
        done;;

계정을 생성하는 $REPLY=1의 경우, for문에서 지정받은 Acount만큼 useradd한다


  2)
        for (( i=1 ; i<=$Dcount ; i++ ))
        do
                userdel -r $Dname$i
        done;;
계정을 삭제하는 $REPLY=2의 경우, for문에서 지정받은 Dcount만큼 userdel을 한다

이때 -r 옵션을 통해 user의 홈디렉터리와 skel파일까지 모두 지우도록 한다

::그렇지 않으면 데이터가 남아 나중에 같은 이름으로 새로운 user를 생성할 때 데이터가 남아있어 정상 실행 되지 않음!


  3)
        echo "프로그램을 종료합니다."
        exit;;
프로그램을 종료하는 $REPLY=3의 경우, exit로 스크립트를 종료한다.
  *)
        echo "잘못 입력하셨습니다."
        exit;;
esac

1,2,3 이외의 다른 값을 입력했을 경우 exit로 스크립트를 종료한다.

 


실행해보기1: hey라는 user를 30개 만들어보자

별다른 알림이 없이 잘 실행됨

~중간 생략~

hey라는 이름의 유저가 30까지 생성된 것을 확인 할 수 있다.

 

실행해보기2: hey유저 30개 모두 삭제해보자

이번에도 별다른 알림없이 정상 종료된 것을 확인

모든 계정이 지워져 사용자 정보 파일(/etc/passwd)에서 찾을 수 없음을 확인

++++++++++++++++++++++++

3번 종료동작과 1,2,3 이외의 다른 입력값을 입력하면 잘못 입력했다는 문구와 함께 종료되는 스크립트도 확인!

더보기

최종 코드

#!/bin/bash
#filename : /root/usermake.sh

echo "****** 계정 일괄 생성/삭제 프로그램 *******"
echo "1. 계정 일괄 생성"
echo "2. 계정 일괄 삭제"
echo "3. 종료"
read -p "메뉴를 선택하세요(1~3): "

if [ $REPLY -eq 1 ];then
        echo -n "생성할 계정명: ";read Aname
        echo -n "생성할 개수: ";read Acount

elif [ $REPLY -eq 2 ];then
        echo -n "삭제할 계정명: ";read Dname
        echo -n "삭제할 개수: ";read Dcount
fi

case $REPLY in

  1)
        for (( i=1 ; i<=$Acount ; i++ ))
        do
                useradd $Aname$i
        done;;

  2)
        for (( i=1 ; i<=$Dcount ; i++ ))
        do
                userdel -r $Dname$i
        done;;

  3)
        echo "프로그램을 종료합니다."
        exit;;

  *)
        echo "잘못 입력하셨습니다."
        exit;;
esac
728x90
반응형

'리눅스(Linux)' 카테고리의 다른 글

vi editor : 단축키  (1) 2024.09.30
disk partitioning  (0) 2024.09.25
Shell Script_function : 계정 일괄 생성/삭제 프로그램  (0) 2024.03.21
Shell Script : 파일 복사하기  (0) 2024.03.20
iptables mangle : ttl_set  (0) 2024.03.05

관련글 더보기