Commit 5eb66179 authored by platyhouse's avatar platyhouse

refs pty_setup_centos.sh

parent 51be0c11
......@@ -20,73 +20,105 @@ NC='\033[0m' # No Color
clear
echo -e "${CYAN}"
cat << "EOF"
____ __ ___ __________ __ __ ____ __ _______ ______
/ __ \/ / / |/_ __/\ \ / / / / / / __ \/ / / / ___/ / ____/
/ /_/ / / / /| | / / \ V / / /_/ / / / / / / /\__ \ / __/
/ ____/ /___/ ___ |/ / | / / __ / / /_/ / /_/ /___/ / /___
/_/ /_____/_/ |_/_/ |_/_/ /_/ \____/\____//____/ /_____/
░█▀█░█░░░█▀█░▀█▀░█░█░░░█░█░█▀█░█░█░█▀▀░█▀▀
░█▀▀░█░░░█▀█░░█░░░█░░░░█▀█░█░█░█░█░▀▀█░█▀▀
░▀░░░▀▀▀░▀░▀░░▀░░░▀░░░░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀
EOF
echo -e "${NC}"
echo -e "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
echo -e "${BLUE} CentOS 초기 설정 자동화 스크립트 v1.0${NC}"
echo ""
echo -e "${BLUE} CentOS 설정 스크립트 v1.0 (pty_setup_centos.sh)${NC}"
echo ""
echo -e "${BLUE} Copyright (C) 2019 by cpueblo@platyhouse.com, PlatyHouse Co.,LTD.${NC}"
echo -e "${BLUE} Visit https://www.platyhouse.com${NC}"
echo ""
echo -e "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
echo ""
# 메뉴 출력 함수
show_menu() {
#echo -e "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
#echo -e "${BLUE} 설치할 항목을 선택하세요${NC}"
echo -e "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
echo ""
echo -e " ${CYAN}0.${NC} 전체 설치"
echo -e " ${CYAN}1.${NC} 호스트명 설정"
echo -e " ${CYAN}2.${NC} 네트워크 IP 설정"
echo -e " ${CYAN}3.${NC} /etc/bashrc 설정"
echo -e " ${CYAN}4.${NC} YUM 캐시 정리"
echo -e " ${CYAN}5.${NC} 시스템 패키지 업데이트"
echo -e " ${CYAN}6.${NC} Python 설치"
echo -e " ${CYAN}7.${NC} Node.js 및 Claude & Gemini CLI 설치"
echo -e " ${CYAN}8.${NC} 필수 패키지 설치"
echo -e " ${CYAN}9.${NC} 시간대를 서울로 설정"
echo -e " ${CYAN}10.${NC} 시간 서버를 time.bora.net으로 설정"
echo -e " ${CYAN}11.${NC} SELinux ON/OFF"
echo -e " ${CYAN}q.${NC} 종료"
echo ""
echo -e "${YELLOW}선택 (예: 0,1,3 또는 0):${NC} \c"
}
#######################################
# 1. 호스트명 설정
#######################################
CURRENT_HOSTNAME=$(hostnamectl --static)
echo -e "${CYAN}[1/5]${NC} 호스트명 설정, 현재 호스트명: ${YELLOW}${CURRENT_HOSTNAME}${NC}"
echo -e "${YELLOW}호스트명을 변경하시겠습니까? (N/y):${NC} \c"
read -n 1 -r REPLY_HOSTNAME
echo
if [[ $REPLY_HOSTNAME =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}설정할 호스트명을 입력하세요:${NC} \c"
read HOSTNAME
if [ -n "$HOSTNAME" ]; then
hostnamectl set-hostname "$HOSTNAME"
echo -e " ${GREEN}${NC} 호스트명이 설정되었습니다: ${YELLOW}$(hostnamectl --static)${NC}"
setup_hostname() {
CURRENT_HOSTNAME=$(hostnamectl --static)
echo -e "${CYAN}[1/11]${NC} 호스트명 설정, 현재 호스트명: ${YELLOW}${CURRENT_HOSTNAME}${NC}"
echo -e "${YELLOW}호스트명을 변경하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_HOSTNAME
echo
if [[ $REPLY_HOSTNAME =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}설정할 호스트명을 입력하세요:${NC} \c"
read HOSTNAME
if [ -n "$HOSTNAME" ]; then
hostnamectl set-hostname "$HOSTNAME"
echo -e " ${GREEN}${NC} 호스트명이 설정되었습니다: ${YELLOW}$(hostnamectl --static)${NC}"
else
echo -e " ${YELLOW}${NC} 호스트명이 입력되지 않아 건너뜁니다."
fi
else
echo -e " ${YELLOW}${NC} 호스트명이 입력되지 않아 건너뜁니다."
echo -e " ${YELLOW}${NC} 호스트명 설정을 건너뜁니다."
fi
fi
echo ""
echo ""
}
#######################################
# 2. 네트워크 IP 설정
#######################################
echo -e "${CYAN}[2/8]${NC} 네트워크 IP 설정"
echo -e "${YELLOW}네트워크 IP를 설정하시겠습니까? (N/y):${NC} \c"
read -n 1 -r REPLY_IP
echo
if [[ $REPLY_IP =~ ^[Yy]$ ]]; then
# 네트워크 인터페이스 목록 표시
echo -e " ${BLUE}사용 가능한 네트워크 인터페이스:${NC}"
ip -br link show | grep -v "lo" | awk '{print " - "$1}'
echo ""
echo -e "${YELLOW}네트워크 인터페이스 이름 (예: eth0, ens33):${NC} \c"
read IFACE
echo -e "${YELLOW}IP 주소 (예: 192.168.1.100):${NC} \c"
read IPADDR
echo -e "${YELLOW}서브넷 마스크 (예: 255.255.255.0):${NC} \c"
read NETMASK
echo -e "${YELLOW}게이트웨이 (예: 192.168.1.1):${NC} \c"
read GATEWAY
echo -e "${YELLOW}DNS 서버 (예: 8.8.8.8):${NC} \c"
read DNS
if [ -n "$IFACE" ] && [ -n "$IPADDR" ] && [ -n "$NETMASK" ] && [ -n "$GATEWAY" ] && [ -n "$DNS" ]; then
# 네트워크 스크립트 파일 생성
IFCFG_FILE="/etc/sysconfig/network-scripts/ifcfg-${IFACE}"
# 백업 생성 (파일이 존재하는 경우)
if [ -f "$IFCFG_FILE" ]; then
cp "$IFCFG_FILE" "${IFCFG_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
fi
# 네트워크 설정 파일 작성
cat > "$IFCFG_FILE" << EOF
setup_network() {
echo -e "${CYAN}[2/11]${NC} 네트워크 IP 설정"
echo -e "${YELLOW}네트워크 IP를 설정하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_IP
echo
if [[ $REPLY_IP =~ ^[Yy]$ ]]; then
# 네트워크 인터페이스 목록 표시
echo -e " ${BLUE}사용 가능한 네트워크 인터페이스:${NC}"
ip -br link show | grep -v "lo" | awk '{print " - "$1}'
echo ""
echo -e "${YELLOW}네트워크 인터페이스 이름 (예: eth0, ens33):${NC} \c"
read IFACE
echo -e "${YELLOW}IP 주소 (예: 192.168.1.100):${NC} \c"
read IPADDR
echo -e "${YELLOW}서브넷 마스크 (예: 255.255.255.0):${NC} \c"
read NETMASK
echo -e "${YELLOW}게이트웨이 (예: 192.168.1.1):${NC} \c"
read GATEWAY
echo -e "${YELLOW}DNS 서버 (예: 8.8.8.8):${NC} \c"
read DNS
if [ -n "$IFACE" ] && [ -n "$IPADDR" ] && [ -n "$NETMASK" ] && [ -n "$GATEWAY" ] && [ -n "$DNS" ]; then
# 네트워크 스크립트 파일 생성
IFCFG_FILE="/etc/sysconfig/network-scripts/ifcfg-${IFACE}"
# 백업 생성 (파일이 존재하는 경우)
if [ -f "$IFCFG_FILE" ]; then
cp "$IFCFG_FILE" "${IFCFG_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
fi
# 네트워크 설정 파일 작성
cat > "$IFCFG_FILE" << EOF
TYPE=Ethernet
BOOTPROTO=static
NAME=${IFACE}
......@@ -98,37 +130,41 @@ GATEWAY=${GATEWAY}
DNS1=${DNS}
EOF
# 네트워크 재시작
echo -e " ${BLUE}${NC} 네트워크 재시작 중..."
systemctl restart NetworkManager > /dev/null 2>&1
echo -e " ${GREEN}${NC} 네트워크 설정이 완료되었습니다."
echo -e " IP: ${YELLOW}${IPADDR}${NC}"
echo -e " Netmask: ${YELLOW}${NETMASK}${NC}"
echo -e " Gateway: ${YELLOW}${GATEWAY}${NC}"
echo -e " DNS: ${YELLOW}${DNS}${NC}"
# 네트워크 재시작
echo -e " ${BLUE}${NC} 네트워크 재시작 중..."
systemctl restart NetworkManager > /dev/null 2>&1
echo -e " ${GREEN}${NC} 네트워크 설정이 완료되었습니다."
echo -e " IP: ${YELLOW}${IPADDR}${NC}"
echo -e " Netmask: ${YELLOW}${NETMASK}${NC}"
echo -e " Gateway: ${YELLOW}${GATEWAY}${NC}"
echo -e " DNS: ${YELLOW}${DNS}${NC}"
else
echo -e " ${YELLOW}${NC} 필수 정보가 입력되지 않아 건너뜁니다."
fi
else
echo -e " ${YELLOW}${NC} 필수 정보가 입력되지 않아 건너뜁니다."
echo -e " ${YELLOW}${NC} 네트워크 IP 설정을 건너뜁니다."
fi
fi
echo ""
echo ""
}
#######################################
# 3. /etc/bashrc 설정
#######################################
echo -e "${CYAN}[3/8]${NC} /etc/bashrc 설정 추가"
echo -e "${YELLOW}/etc/bashrc에 커스텀 설정을 추가하시겠습니까? (N/y):${NC} \c"
read -n 1 -r REPLY_BASHRC
echo
if [[ $REPLY_BASHRC =~ ^[Yy]$ ]]; then
# 백업 생성
cp /etc/bashrc /etc/bashrc.backup.$(date +%Y%m%d_%H%M%S)
setup_bashrc() {
echo -e "${CYAN}[3/11]${NC} /etc/bashrc 설정 추가"
echo -e "${YELLOW}/etc/bashrc에 커스텀 설정을 추가하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_BASHRC
echo
if [[ $REPLY_BASHRC =~ ^[Yy]$ ]]; then
# 백업 생성
cp /etc/bashrc /etc/bashrc.backup.$(date +%Y%m%d_%H%M%S)
# bashrc에 추가할 내용
cat >> /etc/bashrc << 'EOF'
#######################################
# 커스텀 설정
# pty_setup_centos.sh 에 의한 /etc/bashrc 추가 시작
#######################################
# 프롬프트 색상 설정
......@@ -180,107 +216,332 @@ git config --global color.status.header "#ffffff normal bold"
git config --global user.name "KwangHee Yoo"
git config --global user.email "cpueblo@platyhouse.com"
## git 인증 정보 저장
git config credential.helper store
# . 명령.sh 실행을 위함
PATH=$PATH:.
# pty_centos.git 의 실행을 위함
PATH=$PATH:/var/lib/pty_centos.git
#######################################
EOF
echo -e " ${GREEN}${NC} /etc/bashrc 설정이 완료되었습니다."
fi
echo ""
echo -e " ${GREEN}${NC} /etc/bashrc 설정이 완료되었습니다."
else
echo -e " ${YELLOW}${NC} /etc/bashrc 설정을 건너뜁니다."
fi
echo ""
}
#######################################
# 4. YUM 캐시 정리
#######################################
echo -e "${CYAN}[4/8]${NC} YUM 캐시 정리"
echo -e "${YELLOW}YUM 캐시를 정리하시겠습니까? (N/y):${NC} \c"
read -n 1 -r REPLY_YUM_CLEAN
echo
if [[ $REPLY_YUM_CLEAN =~ ^[Yy]$ ]]; then
yum clean all > /dev/null 2>&1
rm -rf /var/cache/yum
echo -e " ${GREEN}${NC} YUM 캐시가 정리되었습니다."
fi
echo ""
setup_yum_clean() {
echo -e "${CYAN}[4/11]${NC} YUM 캐시 정리"
echo -e "${YELLOW}YUM 캐시를 정리하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_YUM_CLEAN
echo
if [[ $REPLY_YUM_CLEAN =~ ^[Yy]$ ]]; then
yum clean all > /dev/null 2>&1
rm -rf /var/cache/yum
echo -e " ${GREEN}${NC} YUM 캐시가 정리되었습니다."
else
echo -e " ${YELLOW}${NC} YUM 캐시 정리를 건너뜁니다."
fi
echo ""
}
#######################################
# 5. 시스템 업데이트
#######################################
echo -e "${CYAN}[5/8]${NC} 시스템 패키지 업데이트"
echo -e "${YELLOW}시스템 업데이트를 진행하시겠습니까? (N/y):${NC} \c"
read -n 1 -r REPLY_UPDATE
echo
if [[ $REPLY_UPDATE =~ ^[Yy]$ ]]; then
yum update -y
echo -e " ${GREEN}${NC} 시스템 업데이트가 완료되었습니다."
fi
echo ""
setup_system_update() {
echo -e "${CYAN}[5/11]${NC} 시스템 패키지 업데이트"
echo -e "${YELLOW}시스템 업데이트를 진행하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_UPDATE
echo
if [[ $REPLY_UPDATE =~ ^[Yy]$ ]]; then
yum update -y
echo -e " ${GREEN}${NC} 시스템 업데이트가 완료되었습니다."
else
echo -e " ${YELLOW}${NC} 시스템 업데이트를 건너뜁니다."
fi
echo ""
}
#######################################
# 6. Python 설치
#######################################
echo -e "${CYAN}[6/8]${NC} Python 설치"
echo -e "${YELLOW}Python을 설치하시겠습니까? (N/y):${NC} \c"
read -n 1 -r REPLY_PYTHON
echo
if [[ $REPLY_PYTHON =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}${NC} Python 설치 중..."
yum install -y python3 python3-pip > /dev/null 2>&1
echo -e " ${GREEN}${NC} Python 설치 완료: $(python3 --version)"
fi
echo ""
setup_python() {
echo -e "${CYAN}[6/11]${NC} Python 설치"
echo -e "${YELLOW}Python을 설치하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_PYTHON
echo
if [[ $REPLY_PYTHON =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}${NC} Python 설치 중..."
yum install -y python3 python3-pip > /dev/null 2>&1
echo -e " ${GREEN}${NC} Python 설치 완료: $(python3 --version)"
else
echo -e " ${YELLOW}${NC} Python 설치를 건너뜁니다."
fi
echo ""
}
#######################################
# 7. Node.js 및 Claude 설치
#######################################
echo -e "${CYAN}[7/8]${NC} Node.js 및 Claude & Gemini Cli 설치"
echo -e "${YELLOW}Node.js와 Claude, Gemini Cli 를 설치하시겠습니까? (N/y):${NC} \c"
read -n 1 -r REPLY_CLAUDE
echo
if [[ $REPLY_CLAUDE =~ ^[Yy]$ ]]; then
# Node.js 설치
echo -e " ${BLUE}${NC} Node.js 설치 중..."
curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - > /dev/null 2>&1
yum install -y nodejs > /dev/null 2>&1
echo -e " ${GREEN}${NC} Node.js 설치 완료: $(node --version)"
# Claude 설치
echo -e " ${BLUE}${NC} Claude 설치 중..."
npm install -g @anthropic-ai/claude-code > /dev/null 2>&1
echo -e " ${GREEN}${NC} Claude 설치가 완료되었습니다."
# Gemini CLI 설치
echo -e " ${BLUE}${NC} Gemini CLI 설치 중..."
npm install -g @google/gemini-cli > /dev/null 2>&1
echo -e " ${GREEN}${NC} Gemini CLI 설치가 완료되었습니다."
fi
echo ""
setup_nodejs_claude() {
echo -e "${CYAN}[7/11]${NC} Node.js 및 Claude & Gemini CLI 설치"
echo -e "${YELLOW}Node.js와 Claude, Gemini CLI를 설치하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_CLAUDE
echo
if [[ $REPLY_CLAUDE =~ ^[Yy]$ ]]; then
# Node.js 설치
echo -e " ${BLUE}${NC} Node.js 설치 중..."
curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - > /dev/null 2>&1
yum install -y nodejs > /dev/null 2>&1
echo -e " ${GREEN}${NC} Node.js 설치 완료: $(node --version)"
# Claude 설치
echo -e " ${BLUE}${NC} Claude 설치 중..."
npm install -g @anthropic-ai/claude-code > /dev/null 2>&1
echo -e " ${GREEN}${NC} Claude 설치가 완료되었습니다."
# Gemini CLI 설치
echo -e " ${BLUE}${NC} Gemini CLI 설치 중..."
npm install -g @google/gemini-cli > /dev/null 2>&1
echo -e " ${GREEN}${NC} Gemini CLI 설치가 완료되었습니다."
else
echo -e " ${YELLOW}${NC} Node.js 및 CLI 설치를 건너뜁니다."
fi
echo ""
}
#######################################
# 8. 필수 패키지 설치
#######################################
echo -e "${CYAN}[8/8]${NC} 필수 패키지 설치"
echo -e "${YELLOW}필수 패키지를 설치하시겠습니까? (vim, wget, curl, net-tools 등) (N/y):${NC} \c"
read -n 1 -r REPLY_PACKAGES
echo
if [[ $REPLY_PACKAGES =~ ^[Yy]$ ]]; then
yum install -y \
vim \
wget \
curl \
net-tools \
bind-utils \
telnet \
tcpdump > /dev/null 2>&1
echo -e " ${GREEN}${NC} 필수 패키지 설치가 완료되었습니다."
fi
echo ""
setup_packages() {
echo -e "${CYAN}[8/11]${NC} 필수 패키지 설치"
echo -e "${YELLOW}필수 패키지를 설치하시겠습니까? (vim, wget, curl, net-tools 등) (y/N):${NC} \c"
read -n 1 -r REPLY_PACKAGES
echo
if [[ $REPLY_PACKAGES =~ ^[Yy]$ ]]; then
yum install -y \
vim \
wget \
curl \
net-tools \
bind-utils \
telnet \
tcpdump > /dev/null 2>&1
echo -e " ${GREEN}${NC} 필수 패키지 설치가 완료되었습니다."
# tmux 설치 여부 확인
echo ""
echo -e " ${YELLOW}tmux를 설치하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_TMUX
echo
if [[ $REPLY_TMUX =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}${NC} tmux 설치 중..."
yum install -y tmux > /dev/null 2>&1
echo -e " ${GREEN}${NC} tmux 설치가 완료되었습니다."
fi
else
echo -e " ${YELLOW}${NC} 필수 패키지 설치를 건너뜁니다."
fi
echo ""
}
#######################################
# 9. 시간대 설정
#######################################
setup_timezone() {
echo -e "${CYAN}[9/11]${NC} 시간대를 서울로 설정"
echo -e "${YELLOW}시간대를 Asia/Seoul로 설정하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_TIMEZONE
echo
if [[ $REPLY_TIMEZONE =~ ^[Yy]$ ]]; then
timedatectl set-timezone Asia/Seoul
echo -e " ${GREEN}${NC} 시간대가 Asia/Seoul로 설정되었습니다."
echo -e " 현재 시간: ${YELLOW}$(date '+%Y-%m-%d %H:%M:%S %Z')${NC}"
else
echo -e " ${YELLOW}${NC} 시간대 설정을 건너뜁니다."
fi
echo ""
}
#######################################
# 10. 시간 서버 설정
#######################################
setup_timeserver() {
echo -e "${CYAN}[10/11]${NC} 시간 서버를 time.bora.net으로 설정"
echo -e "${YELLOW}시간 서버를 time.bora.net으로 설정하시겠습니까? (y/N):${NC} \c"
read -n 1 -r REPLY_TIMESERVER
echo
if [[ $REPLY_TIMESERVER =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}${NC} chrony 패키지 설치 중..."
dnf install chrony -y > /dev/null 2>&1
echo -e " ${BLUE}${NC} chronyd 서비스 활성화 중..."
systemctl enable --now chronyd > /dev/null 2>&1
echo -e " ${BLUE}${NC} time.bora.net 서버 추가 중..."
echo "server time.bora.net iburst" | tee -a /etc/chrony.conf > /dev/null
echo -e " ${BLUE}${NC} chronyd 재시작 중..."
systemctl restart chronyd > /dev/null 2>&1
echo -e " ${GREEN}${NC} 시간 서버 설정이 완료되었습니다."
echo -e " ${BLUE}시간 동기화 소스:${NC}"
chronyc sources -v
else
echo -e " ${YELLOW}${NC} 시간 서버 설정을 건너뜁니다."
fi
echo ""
}
#######################################
# 11. SELinux ON/OFF 설정
#######################################
setup_selinux() {
echo -e "${CYAN}[11/11]${NC} SELinux ON/OFF 설정"
# 현재 SELinux 상태 확인
CURRENT_SELINUX=$(getenforce 2>/dev/null || echo "Unknown")
echo -e " 현재 SELinux 상태: ${YELLOW}${CURRENT_SELINUX}${NC}"
echo ""
echo -e "${YELLOW}SELinux를 어떻게 설정하시겠습니까?${NC}"
echo -e " ${CYAN}1.${NC} SELinux 비활성화 (Disabled)"
echo -e " ${CYAN}2.${NC} SELinux 활성화 (Enforcing)"
echo -e " ${CYAN}3.${NC} 건너뛰기"
echo -e "${YELLOW}선택 (1/2/3):${NC} \c"
read -n 1 -r REPLY_SELINUX
echo
echo
case $REPLY_SELINUX in
1)
echo -e " ${BLUE}${NC} SELinux를 비활성화합니다..."
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
setenforce 0 2>/dev/null
echo -e " ${GREEN}${NC} SELinux가 비활성화되었습니다."
echo -e " ${YELLOW}[참고]${NC} 재부팅 후 완전히 적용됩니다."
;;
2)
echo -e " ${BLUE}${NC} SELinux를 활성화합니다..."
sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config
sed -i 's/SELINUX=permissive/SELINUX=enforcing/g' /etc/selinux/config
echo -e " ${GREEN}${NC} SELinux가 활성화로 설정되었습니다."
echo -e " ${YELLOW}[참고]${NC} 재부팅 후 완전히 적용됩니다."
;;
3)
echo -e " ${YELLOW}${NC} SELinux 설정을 건너뜁니다."
;;
*)
echo -e " ${RED}잘못된 선택입니다.${NC}"
;;
esac
echo ""
}
#######################################
# 메인 실행 로직
#######################################
# 메뉴 반복
while true; do
# 메뉴 표시
show_menu
# 사용자 입력 받기
read MENU_CHOICE
# 입력값 처리 (쉼표로 구분된 값을 배열로 변환)
IFS=',' read -ra CHOICES <<< "$MENU_CHOICE"
echo ""
# 종료 체크
if [[ "$MENU_CHOICE" == "q" ]] || [[ "$MENU_CHOICE" == "Q" ]]; then
echo -e "${YELLOW}설치를 종료합니다.${NC}"
break
fi
# 0번 선택 시 전체 설치하고 종료
if [[ "$MENU_CHOICE" == "0" ]]; then
echo -e "${BLUE}전체 설치를 시작합니다...${NC}"
echo ""
setup_hostname
setup_network
setup_bashrc
setup_yum_clean
setup_system_update
setup_python
setup_nodejs_claude
setup_packages
setup_timezone
setup_timeserver
setup_selinux
break
fi
# 선택된 항목 실행
for choice in "${CHOICES[@]}"; do
# 공백 제거
choice=$(echo "$choice" | xargs)
case $choice in
1)
setup_hostname
;;
2)
setup_network
;;
3)
setup_bashrc
;;
4)
setup_yum_clean
;;
5)
setup_system_update
;;
6)
setup_python
;;
7)
setup_nodejs_claude
;;
8)
setup_packages
;;
9)
setup_timezone
;;
10)
setup_timeserver
;;
11)
setup_selinux
;;
*)
echo -e "${RED}잘못된 선택: ${choice}${NC}"
echo ""
;;
esac
done
done
#######################################
# 완료
#######################################
echo ""
echo -e "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}✓ CentOS 초기 설정이 완료되었습니다!${NC}"
echo -e "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment