Commit 5eb66179 authored by platyhouse's avatar platyhouse

refs pty_setup_centos.sh

parent 51be0c11
...@@ -20,73 +20,105 @@ NC='\033[0m' # No Color ...@@ -20,73 +20,105 @@ NC='\033[0m' # No Color
clear clear
echo -e "${CYAN}" echo -e "${CYAN}"
cat << "EOF" cat << "EOF"
____ __ ___ __________ __ __ ____ __ _______ ______
/ __ \/ / / |/_ __/\ \ / / / / / / __ \/ / / / ___/ / ____/ ░█▀█░█░░░█▀█░▀█▀░█░█░░░█░█░█▀█░█░█░█▀▀░█▀▀
/ /_/ / / / /| | / / \ V / / /_/ / / / / / / /\__ \ / __/ ░█▀▀░█░░░█▀█░░█░░░█░░░░█▀█░█░█░█░█░▀▀█░█▀▀
/ ____/ /___/ ___ |/ / | / / __ / / /_/ / /_/ /___/ / /___ ░▀░░░▀▀▀░▀░▀░░▀░░░▀░░░░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀
/_/ /_____/_/ |_/_/ |_/_/ /_/ \____/\____//____/ /_____/
EOF EOF
echo -e "${NC}" echo -e "${NC}"
echo -e "${PURPLE}═══════════════════════════════════════════════════════════${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 -e "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
echo "" 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. 호스트명 설정 # 1. 호스트명 설정
####################################### #######################################
CURRENT_HOSTNAME=$(hostnamectl --static) setup_hostname() {
echo -e "${CYAN}[1/5]${NC} 호스트명 설정, 현재 호스트명: ${YELLOW}${CURRENT_HOSTNAME}${NC}" CURRENT_HOSTNAME=$(hostnamectl --static)
echo -e "${YELLOW}호스트명을 변경하시겠습니까? (N/y):${NC} \c" echo -e "${CYAN}[1/11]${NC} 호스트명 설정, 현재 호스트명: ${YELLOW}${CURRENT_HOSTNAME}${NC}"
read -n 1 -r REPLY_HOSTNAME echo -e "${YELLOW}호스트명을 변경하시겠습니까? (y/N):${NC} \c"
echo read -n 1 -r REPLY_HOSTNAME
if [[ $REPLY_HOSTNAME =~ ^[Yy]$ ]]; then echo
echo -e "${YELLOW}설정할 호스트명을 입력하세요:${NC} \c" if [[ $REPLY_HOSTNAME =~ ^[Yy]$ ]]; then
read HOSTNAME echo -e "${YELLOW}설정할 호스트명을 입력하세요:${NC} \c"
if [ -n "$HOSTNAME" ]; then read HOSTNAME
hostnamectl set-hostname "$HOSTNAME" if [ -n "$HOSTNAME" ]; then
echo -e " ${GREEN}${NC} 호스트명이 설정되었습니다: ${YELLOW}$(hostnamectl --static)${NC}" hostnamectl set-hostname "$HOSTNAME"
echo -e " ${GREEN}${NC} 호스트명이 설정되었습니다: ${YELLOW}$(hostnamectl --static)${NC}"
else
echo -e " ${YELLOW}${NC} 호스트명이 입력되지 않아 건너뜁니다."
fi
else else
echo -e " ${YELLOW}${NC} 호스트명이 입력되지 않아 건너뜁니다." echo -e " ${YELLOW}${NC} 호스트명 설정을 건너뜁니다."
fi fi
fi echo ""
echo "" }
####################################### #######################################
# 2. 네트워크 IP 설정 # 2. 네트워크 IP 설정
####################################### #######################################
echo -e "${CYAN}[2/8]${NC} 네트워크 IP 설정" setup_network() {
echo -e "${YELLOW}네트워크 IP를 설정하시겠습니까? (N/y):${NC} \c" echo -e "${CYAN}[2/11]${NC} 네트워크 IP 설정"
read -n 1 -r REPLY_IP echo -e "${YELLOW}네트워크 IP를 설정하시겠습니까? (y/N):${NC} \c"
echo read -n 1 -r REPLY_IP
if [[ $REPLY_IP =~ ^[Yy]$ ]]; then echo
# 네트워크 인터페이스 목록 표시 if [[ $REPLY_IP =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}사용 가능한 네트워크 인터페이스:${NC}" # 네트워크 인터페이스 목록 표시
ip -br link show | grep -v "lo" | awk '{print " - "$1}' echo -e " ${BLUE}사용 가능한 네트워크 인터페이스:${NC}"
echo "" ip -br link show | grep -v "lo" | awk '{print " - "$1}'
echo ""
echo -e "${YELLOW}네트워크 인터페이스 이름 (예: eth0, ens33):${NC} \c"
read IFACE echo -e "${YELLOW}네트워크 인터페이스 이름 (예: eth0, ens33):${NC} \c"
echo -e "${YELLOW}IP 주소 (예: 192.168.1.100):${NC} \c" read IFACE
read IPADDR echo -e "${YELLOW}IP 주소 (예: 192.168.1.100):${NC} \c"
echo -e "${YELLOW}서브넷 마스크 (예: 255.255.255.0):${NC} \c" read IPADDR
read NETMASK echo -e "${YELLOW}서브넷 마스크 (예: 255.255.255.0):${NC} \c"
echo -e "${YELLOW}게이트웨이 (예: 192.168.1.1):${NC} \c" read NETMASK
read GATEWAY echo -e "${YELLOW}게이트웨이 (예: 192.168.1.1):${NC} \c"
echo -e "${YELLOW}DNS 서버 (예: 8.8.8.8):${NC} \c" read GATEWAY
read DNS echo -e "${YELLOW}DNS 서버 (예: 8.8.8.8):${NC} \c"
read DNS
if [ -n "$IFACE" ] && [ -n "$IPADDR" ] && [ -n "$NETMASK" ] && [ -n "$GATEWAY" ] && [ -n "$DNS" ]; then
# 네트워크 스크립트 파일 생성 if [ -n "$IFACE" ] && [ -n "$IPADDR" ] && [ -n "$NETMASK" ] && [ -n "$GATEWAY" ] && [ -n "$DNS" ]; then
IFCFG_FILE="/etc/sysconfig/network-scripts/ifcfg-${IFACE}" # 네트워크 스크립트 파일 생성
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)" if [ -f "$IFCFG_FILE" ]; then
fi cp "$IFCFG_FILE" "${IFCFG_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
fi
# 네트워크 설정 파일 작성
cat > "$IFCFG_FILE" << EOF # 네트워크 설정 파일 작성
cat > "$IFCFG_FILE" << EOF
TYPE=Ethernet TYPE=Ethernet
BOOTPROTO=static BOOTPROTO=static
NAME=${IFACE} NAME=${IFACE}
...@@ -98,37 +130,41 @@ GATEWAY=${GATEWAY} ...@@ -98,37 +130,41 @@ GATEWAY=${GATEWAY}
DNS1=${DNS} DNS1=${DNS}
EOF EOF
# 네트워크 재시작 # 네트워크 재시작
echo -e " ${BLUE}${NC} 네트워크 재시작 중..." echo -e " ${BLUE}${NC} 네트워크 재시작 중..."
systemctl restart NetworkManager > /dev/null 2>&1 systemctl restart NetworkManager > /dev/null 2>&1
echo -e " ${GREEN}${NC} 네트워크 설정이 완료되었습니다." echo -e " ${GREEN}${NC} 네트워크 설정이 완료되었습니다."
echo -e " IP: ${YELLOW}${IPADDR}${NC}" echo -e " IP: ${YELLOW}${IPADDR}${NC}"
echo -e " Netmask: ${YELLOW}${NETMASK}${NC}" echo -e " Netmask: ${YELLOW}${NETMASK}${NC}"
echo -e " Gateway: ${YELLOW}${GATEWAY}${NC}" echo -e " Gateway: ${YELLOW}${GATEWAY}${NC}"
echo -e " DNS: ${YELLOW}${DNS}${NC}" echo -e " DNS: ${YELLOW}${DNS}${NC}"
else
echo -e " ${YELLOW}${NC} 필수 정보가 입력되지 않아 건너뜁니다."
fi
else else
echo -e " ${YELLOW}${NC} 필수 정보가 입력되지 않아 건너뜁니다." echo -e " ${YELLOW}${NC} 네트워크 IP 설정을 건너뜁니다."
fi fi
fi echo ""
echo "" }
####################################### #######################################
# 3. /etc/bashrc 설정 # 3. /etc/bashrc 설정
####################################### #######################################
echo -e "${CYAN}[3/8]${NC} /etc/bashrc 설정 추가" setup_bashrc() {
echo -e "${YELLOW}/etc/bashrc에 커스텀 설정을 추가하시겠습니까? (N/y):${NC} \c" echo -e "${CYAN}[3/11]${NC} /etc/bashrc 설정 추가"
read -n 1 -r REPLY_BASHRC echo -e "${YELLOW}/etc/bashrc에 커스텀 설정을 추가하시겠습니까? (y/N):${NC} \c"
echo read -n 1 -r REPLY_BASHRC
if [[ $REPLY_BASHRC =~ ^[Yy]$ ]]; then echo
# 백업 생성 if [[ $REPLY_BASHRC =~ ^[Yy]$ ]]; then
cp /etc/bashrc /etc/bashrc.backup.$(date +%Y%m%d_%H%M%S) # 백업 생성
cp /etc/bashrc /etc/bashrc.backup.$(date +%Y%m%d_%H%M%S)
# bashrc에 추가할 내용 # bashrc에 추가할 내용
cat >> /etc/bashrc << 'EOF' cat >> /etc/bashrc << 'EOF'
####################################### #######################################
# 커스텀 설정 # pty_setup_centos.sh 에 의한 /etc/bashrc 추가 시작
####################################### #######################################
# 프롬프트 색상 설정 # 프롬프트 색상 설정
...@@ -180,107 +216,332 @@ git config --global color.status.header "#ffffff normal bold" ...@@ -180,107 +216,332 @@ git config --global color.status.header "#ffffff normal bold"
git config --global user.name "KwangHee Yoo" git config --global user.name "KwangHee Yoo"
git config --global user.email "cpueblo@platyhouse.com" git config --global user.email "cpueblo@platyhouse.com"
## git 인증 정보 저장
git config credential.helper store
# . 명령.sh 실행을 위함 # . 명령.sh 실행을 위함
PATH=$PATH:. PATH=$PATH:.
# pty_centos.git 의 실행을 위함
PATH=$PATH:/var/lib/pty_centos.git
#######################################
EOF EOF
echo -e " ${GREEN}${NC} /etc/bashrc 설정이 완료되었습니다." echo -e " ${GREEN}${NC} /etc/bashrc 설정이 완료되었습니다."
fi else
echo "" echo -e " ${YELLOW}${NC} /etc/bashrc 설정을 건너뜁니다."
fi
echo ""
}
####################################### #######################################
# 4. YUM 캐시 정리 # 4. YUM 캐시 정리
####################################### #######################################
echo -e "${CYAN}[4/8]${NC} YUM 캐시 정리" setup_yum_clean() {
echo -e "${YELLOW}YUM 캐시를 정리하시겠습니까? (N/y):${NC} \c" echo -e "${CYAN}[4/11]${NC} YUM 캐시 정리"
read -n 1 -r REPLY_YUM_CLEAN echo -e "${YELLOW}YUM 캐시를 정리하시겠습니까? (y/N):${NC} \c"
echo read -n 1 -r REPLY_YUM_CLEAN
if [[ $REPLY_YUM_CLEAN =~ ^[Yy]$ ]]; then echo
yum clean all > /dev/null 2>&1 if [[ $REPLY_YUM_CLEAN =~ ^[Yy]$ ]]; then
rm -rf /var/cache/yum yum clean all > /dev/null 2>&1
echo -e " ${GREEN}${NC} YUM 캐시가 정리되었습니다." rm -rf /var/cache/yum
fi echo -e " ${GREEN}${NC} YUM 캐시가 정리되었습니다."
echo "" else
echo -e " ${YELLOW}${NC} YUM 캐시 정리를 건너뜁니다."
fi
echo ""
}
####################################### #######################################
# 5. 시스템 업데이트 # 5. 시스템 업데이트
####################################### #######################################
echo -e "${CYAN}[5/8]${NC} 시스템 패키지 업데이트" setup_system_update() {
echo -e "${YELLOW}시스템 업데이트를 진행하시겠습니까? (N/y):${NC} \c" echo -e "${CYAN}[5/11]${NC} 시스템 패키지 업데이트"
read -n 1 -r REPLY_UPDATE echo -e "${YELLOW}시스템 업데이트를 진행하시겠습니까? (y/N):${NC} \c"
echo read -n 1 -r REPLY_UPDATE
if [[ $REPLY_UPDATE =~ ^[Yy]$ ]]; then echo
yum update -y if [[ $REPLY_UPDATE =~ ^[Yy]$ ]]; then
echo -e " ${GREEN}${NC} 시스템 업데이트가 완료되었습니다." yum update -y
fi echo -e " ${GREEN}${NC} 시스템 업데이트가 완료되었습니다."
echo "" else
echo -e " ${YELLOW}${NC} 시스템 업데이트를 건너뜁니다."
fi
echo ""
}
####################################### #######################################
# 6. Python 설치 # 6. Python 설치
####################################### #######################################
echo -e "${CYAN}[6/8]${NC} Python 설치" setup_python() {
echo -e "${YELLOW}Python을 설치하시겠습니까? (N/y):${NC} \c" echo -e "${CYAN}[6/11]${NC} Python 설치"
read -n 1 -r REPLY_PYTHON echo -e "${YELLOW}Python을 설치하시겠습니까? (y/N):${NC} \c"
echo read -n 1 -r REPLY_PYTHON
if [[ $REPLY_PYTHON =~ ^[Yy]$ ]]; then echo
echo -e " ${BLUE}${NC} Python 설치 중..." if [[ $REPLY_PYTHON =~ ^[Yy]$ ]]; then
yum install -y python3 python3-pip > /dev/null 2>&1 echo -e " ${BLUE}${NC} Python 설치 중..."
echo -e " ${GREEN}${NC} Python 설치 완료: $(python3 --version)" yum install -y python3 python3-pip > /dev/null 2>&1
fi echo -e " ${GREEN}${NC} Python 설치 완료: $(python3 --version)"
echo "" else
echo -e " ${YELLOW}${NC} Python 설치를 건너뜁니다."
fi
echo ""
}
####################################### #######################################
# 7. Node.js 및 Claude 설치 # 7. Node.js 및 Claude 설치
####################################### #######################################
echo -e "${CYAN}[7/8]${NC} Node.js 및 Claude & Gemini Cli 설치" setup_nodejs_claude() {
echo -e "${YELLOW}Node.js와 Claude, Gemini Cli 를 설치하시겠습니까? (N/y):${NC} \c" echo -e "${CYAN}[7/11]${NC} Node.js 및 Claude & Gemini CLI 설치"
read -n 1 -r REPLY_CLAUDE echo -e "${YELLOW}Node.js와 Claude, Gemini CLI를 설치하시겠습니까? (y/N):${NC} \c"
echo read -n 1 -r REPLY_CLAUDE
if [[ $REPLY_CLAUDE =~ ^[Yy]$ ]]; then echo
# Node.js 설치 if [[ $REPLY_CLAUDE =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}${NC} Node.js 설치 중..." # Node.js 설치
curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - > /dev/null 2>&1 echo -e " ${BLUE}${NC} Node.js 설치 중..."
yum install -y nodejs > /dev/null 2>&1 curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - > /dev/null 2>&1
echo -e " ${GREEN}${NC} Node.js 설치 완료: $(node --version)" yum install -y nodejs > /dev/null 2>&1
echo -e " ${GREEN}${NC} Node.js 설치 완료: $(node --version)"
# Claude 설치
echo -e " ${BLUE}${NC} Claude 설치 중..." # Claude 설치
npm install -g @anthropic-ai/claude-code > /dev/null 2>&1 echo -e " ${BLUE}${NC} Claude 설치 중..."
echo -e " ${GREEN}${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 설치 중..." # Gemini CLI 설치
npm install -g @google/gemini-cli > /dev/null 2>&1 echo -e " ${BLUE}${NC} Gemini CLI 설치 중..."
echo -e " ${GREEN}${NC} Gemini CLI 설치가 완료되었습니다." npm install -g @google/gemini-cli > /dev/null 2>&1
fi echo -e " ${GREEN}${NC} Gemini CLI 설치가 완료되었습니다."
echo "" else
echo -e " ${YELLOW}${NC} Node.js 및 CLI 설치를 건너뜁니다."
fi
echo ""
}
####################################### #######################################
# 8. 필수 패키지 설치 # 8. 필수 패키지 설치
####################################### #######################################
echo -e "${CYAN}[8/8]${NC} 필수 패키지 설치" setup_packages() {
echo -e "${YELLOW}필수 패키지를 설치하시겠습니까? (vim, wget, curl, net-tools 등) (N/y):${NC} \c" echo -e "${CYAN}[8/11]${NC} 필수 패키지 설치"
read -n 1 -r REPLY_PACKAGES echo -e "${YELLOW}필수 패키지를 설치하시겠습니까? (vim, wget, curl, net-tools 등) (y/N):${NC} \c"
echo read -n 1 -r REPLY_PACKAGES
if [[ $REPLY_PACKAGES =~ ^[Yy]$ ]]; then echo
yum install -y \ if [[ $REPLY_PACKAGES =~ ^[Yy]$ ]]; then
vim \ yum install -y \
wget \ vim \
curl \ wget \
net-tools \ curl \
bind-utils \ net-tools \
telnet \ bind-utils \
tcpdump > /dev/null 2>&1 telnet \
tcpdump > /dev/null 2>&1
echo -e " ${GREEN}${NC} 필수 패키지 설치가 완료되었습니다."
fi echo -e " ${GREEN}${NC} 필수 패키지 설치가 완료되었습니다."
echo ""
# 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 "${PURPLE}═══════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}✓ CentOS 초기 설정이 완료되었습니다!${NC}" echo -e "${GREEN}✓ CentOS 초기 설정이 완료되었습니다!${NC}"
echo -e "${PURPLE}═══════════════════════════════════════════════════════════${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