시나리오: 계정을 자동으로 일괄 생성/삭제 할 수 있는 프로그램을 만들자
계정 명과 그 개수를 입력받아 지정받은 만큼 계정을 생성하고, 삭제할 수 있도록 한다.
순차적으로 코드를 구성해보자
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
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 |