Commit 5eb66179 authored by platyhouse's avatar platyhouse

refs pty_setup_centos.sh

parent 51be0c11
...@@ -20,27 +20,55 @@ NC='\033[0m' # No Color ...@@ -20,27 +20,55 @@ 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
if [[ $REPLY_HOSTNAME =~ ^[Yy]$ ]]; then
echo -e "${YELLOW}설정할 호스트명을 입력하세요:${NC} \c" echo -e "${YELLOW}설정할 호스트명을 입력하세요:${NC} \c"
read HOSTNAME read HOSTNAME
if [ -n "$HOSTNAME" ]; then if [ -n "$HOSTNAME" ]; then
...@@ -49,17 +77,21 @@ if [[ $REPLY_HOSTNAME =~ ^[Yy]$ ]]; then ...@@ -49,17 +77,21 @@ if [[ $REPLY_HOSTNAME =~ ^[Yy]$ ]]; then
else else
echo -e " ${YELLOW}${NC} 호스트명이 입력되지 않아 건너뜁니다." echo -e " ${YELLOW}${NC} 호스트명이 입력되지 않아 건너뜁니다."
fi fi
fi else
echo "" echo -e " ${YELLOW}${NC} 호스트명 설정을 건너뜁니다."
fi
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}" echo -e " ${BLUE}사용 가능한 네트워크 인터페이스:${NC}"
ip -br link show | grep -v "lo" | awk '{print " - "$1}' ip -br link show | grep -v "lo" | awk '{print " - "$1}'
...@@ -110,17 +142,21 @@ EOF ...@@ -110,17 +142,21 @@ EOF
else else
echo -e " ${YELLOW}${NC} 필수 정보가 입력되지 않아 건너뜁니다." echo -e " ${YELLOW}${NC} 필수 정보가 입력되지 않아 건너뜁니다."
fi fi
fi else
echo "" echo -e " ${YELLOW}${NC} 네트워크 IP 설정을 건너뜁니다."
fi
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)
...@@ -128,7 +164,7 @@ if [[ $REPLY_BASHRC =~ ^[Yy]$ ]]; then ...@@ -128,7 +164,7 @@ if [[ $REPLY_BASHRC =~ ^[Yy]$ ]]; then
cat >> /etc/bashrc << 'EOF' cat >> /etc/bashrc << 'EOF'
####################################### #######################################
# 커스텀 설정 # pty_setup_centos.sh 에 의한 /etc/bashrc 추가 시작
####################################### #######################################
# 프롬프트 색상 설정 # 프롬프트 색상 설정
...@@ -180,65 +216,89 @@ git config --global color.status.header "#ffffff normal bold" ...@@ -180,65 +216,89 @@ 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
if [[ $REPLY_YUM_CLEAN =~ ^[Yy]$ ]]; then
yum clean all > /dev/null 2>&1 yum clean all > /dev/null 2>&1
rm -rf /var/cache/yum rm -rf /var/cache/yum
echo -e " ${GREEN}${NC} YUM 캐시가 정리되었습니다." echo -e " ${GREEN}${NC} YUM 캐시가 정리되었습니다."
fi else
echo "" 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
if [[ $REPLY_UPDATE =~ ^[Yy]$ ]]; then
yum update -y yum update -y
echo -e " ${GREEN}${NC} 시스템 업데이트가 완료되었습니다." echo -e " ${GREEN}${NC} 시스템 업데이트가 완료되었습니다."
fi else
echo "" 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
if [[ $REPLY_PYTHON =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}${NC} Python 설치 중..." echo -e " ${BLUE}${NC} Python 설치 중..."
yum install -y python3 python3-pip > /dev/null 2>&1 yum install -y python3 python3-pip > /dev/null 2>&1
echo -e " ${GREEN}${NC} Python 설치 완료: $(python3 --version)" echo -e " ${GREEN}${NC} Python 설치 완료: $(python3 --version)"
fi else
echo "" 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
if [[ $REPLY_CLAUDE =~ ^[Yy]$ ]]; then
# Node.js 설치 # Node.js 설치
echo -e " ${BLUE}${NC} Node.js 설치 중..." echo -e " ${BLUE}${NC} Node.js 설치 중..."
curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - > /dev/null 2>&1 curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - > /dev/null 2>&1
...@@ -254,17 +314,21 @@ if [[ $REPLY_CLAUDE =~ ^[Yy]$ ]]; then ...@@ -254,17 +314,21 @@ if [[ $REPLY_CLAUDE =~ ^[Yy]$ ]]; then
echo -e " ${BLUE}${NC} Gemini CLI 설치 중..." echo -e " ${BLUE}${NC} Gemini CLI 설치 중..."
npm install -g @google/gemini-cli > /dev/null 2>&1 npm install -g @google/gemini-cli > /dev/null 2>&1
echo -e " ${GREEN}${NC} Gemini CLI 설치가 완료되었습니다." echo -e " ${GREEN}${NC} Gemini CLI 설치가 완료되었습니다."
fi else
echo "" 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
if [[ $REPLY_PACKAGES =~ ^[Yy]$ ]]; then
yum install -y \ yum install -y \
vim \ vim \
wget \ wget \
...@@ -275,12 +339,209 @@ if [[ $REPLY_PACKAGES =~ ^[Yy]$ ]]; then ...@@ -275,12 +339,209 @@ if [[ $REPLY_PACKAGES =~ ^[Yy]$ ]]; then
tcpdump > /dev/null 2>&1 tcpdump > /dev/null 2>&1
echo -e " ${GREEN}${NC} 필수 패키지 설치가 완료되었습니다." echo -e " ${GREEN}${NC} 필수 패키지 설치가 완료되었습니다."
fi
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