Fix stdin redirection for curl | bash execution - add /dev/tty to all read commands
This commit is contained in:
@ -4,6 +4,7 @@
|
|||||||
# root 계정에서 실행
|
# root 계정에서 실행
|
||||||
# Linux / DB 계정 통합 여부 선택 가능
|
# Linux / DB 계정 통합 여부 선택 가능
|
||||||
# dotfiles는 git에서 다운로드
|
# dotfiles는 git에서 다운로드
|
||||||
|
# 파이프 실행 지원 (curl | bash)
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@ -14,6 +15,21 @@ DOTFILES_BASE_URL="https://git.siane.kr/firstgarden/cafe24-testserver/raw/branch
|
|||||||
LINUX_USER=""
|
LINUX_USER=""
|
||||||
DB_USER=""
|
DB_USER=""
|
||||||
|
|
||||||
|
# 터미널 입력 헬퍼 함수
|
||||||
|
# curl | bash로 실행할 때 /dev/tty에서 입력을 받도록 함
|
||||||
|
read_input() {
|
||||||
|
local prompt="$1"
|
||||||
|
local var_name="$2"
|
||||||
|
local is_secret="${3:-false}"
|
||||||
|
|
||||||
|
if [ "$is_secret" = "true" ]; then
|
||||||
|
read -s -p "$prompt" "$var_name" < /dev/tty
|
||||||
|
echo "" >&2
|
||||||
|
else
|
||||||
|
read -p "$prompt" "$var_name" < /dev/tty
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# 오류 처리 및 초기화 함수
|
# 오류 처리 및 초기화 함수
|
||||||
cleanup() {
|
cleanup() {
|
||||||
EXIT_CODE=$?
|
EXIT_CODE=$?
|
||||||
@ -25,7 +41,7 @@ cleanup() {
|
|||||||
|
|
||||||
# LINUX_USER가 설정되어 있으면 초기화 옵션 제공
|
# LINUX_USER가 설정되어 있으면 초기화 옵션 제공
|
||||||
if [ -n "$LINUX_USER" ]; then
|
if [ -n "$LINUX_USER" ]; then
|
||||||
read -p "초기화하고 다시 시작하시겠습니까? (y/n): " REINIT
|
read_input "초기화하고 다시 시작하시겠습니까? (y/n): " REINIT
|
||||||
if [[ "$REINIT" =~ ^[Yy]$ ]]; then
|
if [[ "$REINIT" =~ ^[Yy]$ ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "⚠️ $LINUX_USER 사용자 및 관련 설정을 초기화합니다..."
|
echo "⚠️ $LINUX_USER 사용자 및 관련 설정을 초기화합니다..."
|
||||||
@ -76,7 +92,7 @@ echo "✓ 필수 패키지 설치 완료"
|
|||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
# 2. Linux 사용자 정보 입력
|
# 2. Linux 사용자 정보 입력
|
||||||
# -------------------------------------------------
|
# -------------------------------------------------
|
||||||
read -p "Linux 사용자 이름: " LINUX_USER
|
read_input "Linux 사용자 이름: " LINUX_USER
|
||||||
|
|
||||||
# 사용자 존재 확인 및 재생성 옵션
|
# 사용자 존재 확인 및 재생성 옵션
|
||||||
if id "$LINUX_USER" &>/dev/null; then
|
if id "$LINUX_USER" &>/dev/null; then
|
||||||
@ -86,11 +102,11 @@ if id "$LINUX_USER" &>/dev/null; then
|
|||||||
echo " 1) 기존 사용자 사용 (비밀번호는 변경하지 않음)"
|
echo " 1) 기존 사용자 사용 (비밀번호는 변경하지 않음)"
|
||||||
echo " 2) 사용자 삭제 후 재생성 (홈 디렉토리 포함 삭제)"
|
echo " 2) 사용자 삭제 후 재생성 (홈 디렉토리 포함 삭제)"
|
||||||
echo ""
|
echo ""
|
||||||
read -p "선택 (1 또는 2): " USER_ACTION
|
read_input "선택 (1 또는 2): " USER_ACTION
|
||||||
|
|
||||||
case $USER_ACTION in
|
case $USER_ACTION in
|
||||||
2)
|
2)
|
||||||
read -p "정말로 '$LINUX_USER'을(를) 삭제하고 재생성하시겠습니까? (y/n): " CONFIRM
|
read_input "정말로 '$LINUX_USER'을(를) 삭제하고 재생성하시겠습니까? (y/n): " CONFIRM
|
||||||
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
|
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
|
||||||
echo "사용자 삭제 중..."
|
echo "사용자 삭제 중..."
|
||||||
userdel -r "$LINUX_USER" 2>/dev/null || userdel "$LINUX_USER" 2>/dev/null || true
|
userdel -r "$LINUX_USER" 2>/dev/null || userdel "$LINUX_USER" 2>/dev/null || true
|
||||||
@ -98,7 +114,7 @@ if id "$LINUX_USER" &>/dev/null; then
|
|||||||
|
|
||||||
# 새 비밀번호 입력 (재시도 옵션)
|
# 새 비밀번호 입력 (재시도 옵션)
|
||||||
while true; do
|
while true; do
|
||||||
read -s -p "새로운 Linux 사용자 비밀번호: " LINUX_PW
|
read -s -p "새로운 Linux 사용자 비밀번호: " LINUX_PW < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 비밀번호 입력 확인
|
# 비밀번호 입력 확인
|
||||||
@ -107,12 +123,12 @@ if id "$LINUX_USER" &>/dev/null; then
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -s -p "Linux 사용자 비밀번호 확인: " LINUX_PW_CONFIRM
|
read -s -p "Linux 사용자 비밀번호 확인: " LINUX_PW_CONFIRM < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
|
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
|
||||||
echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다."
|
echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다."
|
||||||
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW_2
|
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW_2 < /dev/tty
|
||||||
RETRY_PW_2=${RETRY_PW_2:-Y}
|
RETRY_PW_2=${RETRY_PW_2:-Y}
|
||||||
if [[ ! "$RETRY_PW_2" =~ ^[Yy]$ ]]; then
|
if [[ ! "$RETRY_PW_2" =~ ^[Yy]$ ]]; then
|
||||||
echo "비밀번호 입력을 취소했습니다."
|
echo "비밀번호 입력을 취소했습니다."
|
||||||
@ -137,7 +153,7 @@ if id "$LINUX_USER" &>/dev/null; then
|
|||||||
else
|
else
|
||||||
# 새 사용자 생성 (비밀번호 입력)
|
# 새 사용자 생성 (비밀번호 입력)
|
||||||
while true; do
|
while true; do
|
||||||
read -s -p "Linux 사용자 비밀번호: " LINUX_PW
|
read -s -p "Linux 사용자 비밀번호: " LINUX_PW < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 비밀번호 입력 확인
|
# 비밀번호 입력 확인
|
||||||
@ -146,16 +162,16 @@ else
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -s -p "Linux 사용자 비밀번호 확인: " LINUX_PW_CONFIRM
|
read -s -p "Linux 사용자 비밀번호 확인: " LINUX_PW_CONFIRM < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
|
if [[ "$LINUX_PW" != "$LINUX_PW_CONFIRM" ]]; then
|
||||||
echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다."
|
echo "❌ Linux 사용자 비밀번호가 일치하지 않습니다."
|
||||||
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW
|
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_PW < /dev/tty
|
||||||
RETRY_PW=${RETRY_PW:-Y}
|
RETRY_PW=${RETRY_PW:-Y}
|
||||||
if [[ ! "$RETRY_PW" =~ ^[Yy]$ ]]; then
|
if [[ ! "$RETRY_PW" =~ ^[Yy]$ ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT
|
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT < /dev/tty
|
||||||
RESTART_SCRIPT=${RESTART_SCRIPT:-Y}
|
RESTART_SCRIPT=${RESTART_SCRIPT:-Y}
|
||||||
if [[ "$RESTART_SCRIPT" =~ ^[Yy]$ ]]; then
|
if [[ "$RESTART_SCRIPT" =~ ^[Yy]$ ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
@ -172,7 +188,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# MariaDB 계정 설정
|
# MariaDB 계정 설정
|
||||||
read -p "MariaDB 계정을 Linux 계정과 동일하게 사용할까요? (Y/n): " SAME_ACCOUNT
|
read -p "MariaDB 계정을 Linux 계정과 동일하게 사용할까요? (Y/n): " SAME_ACCOUNT < /dev/tty
|
||||||
SAME_ACCOUNT=${SAME_ACCOUNT:-Y}
|
SAME_ACCOUNT=${SAME_ACCOUNT:-Y}
|
||||||
|
|
||||||
if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then
|
if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then
|
||||||
@ -182,7 +198,7 @@ if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then
|
|||||||
else
|
else
|
||||||
# 기존 사용자의 경우 비밀번호 입력
|
# 기존 사용자의 경우 비밀번호 입력
|
||||||
while true; do
|
while true; do
|
||||||
read -s -p "MariaDB 비밀번호: " DB_PW
|
read -s -p "MariaDB 비밀번호: " DB_PW < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 비밀번호 입력 확인
|
# 비밀번호 입력 확인
|
||||||
@ -191,16 +207,16 @@ if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -s -p "MariaDB 비밀번호 확인: " DB_PW_CONFIRM
|
read -s -p "MariaDB 비밀번호 확인: " DB_PW_CONFIRM < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
|
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
|
||||||
echo "❌ MariaDB 비밀번호가 일치하지 않습니다."
|
echo "❌ MariaDB 비밀번호가 일치하지 않습니다."
|
||||||
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW
|
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW < /dev/tty
|
||||||
RETRY_DB_PW=${RETRY_DB_PW:-Y}
|
RETRY_DB_PW=${RETRY_DB_PW:-Y}
|
||||||
if [[ ! "$RETRY_DB_PW" =~ ^[Yy]$ ]]; then
|
if [[ ! "$RETRY_DB_PW" =~ ^[Yy]$ ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT2
|
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT2 < /dev/tty
|
||||||
RESTART_SCRIPT2=${RESTART_SCRIPT2:-Y}
|
RESTART_SCRIPT2=${RESTART_SCRIPT2:-Y}
|
||||||
if [[ "$RESTART_SCRIPT2" =~ ^[Yy]$ ]]; then
|
if [[ "$RESTART_SCRIPT2" =~ ^[Yy]$ ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
@ -216,10 +232,10 @@ if [[ "$SAME_ACCOUNT" =~ ^[Yy]$ ]]; then
|
|||||||
fi
|
fi
|
||||||
echo "→ DB 사용자/비밀번호를 Linux 계정과 동일하게 사용합니다."
|
echo "→ DB 사용자/비밀번호를 Linux 계정과 동일하게 사용합니다."
|
||||||
else
|
else
|
||||||
read -p "MariaDB 사용자 이름: " DB_USER
|
read -p "MariaDB 사용자 이름: " DB_USER < /dev/tty
|
||||||
# MariaDB 사용자 비밀번호 입력 (재시도 옵션)
|
# MariaDB 사용자 비밀번호 입력 (재시도 옵션)
|
||||||
while true; do
|
while true; do
|
||||||
read -s -p "MariaDB 사용자 비밀번호: " DB_PW
|
read -s -p "MariaDB 사용자 비밀번호: " DB_PW < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# 비밀번호 입력 확인
|
# 비밀번호 입력 확인
|
||||||
@ -228,16 +244,16 @@ else
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -s -p "MariaDB 사용자 비밀번호 확인: " DB_PW_CONFIRM
|
read -s -p "MariaDB 사용자 비밀번호 확인: " DB_PW_CONFIRM < /dev/tty
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
|
if [[ "$DB_PW" != "$DB_PW_CONFIRM" ]]; then
|
||||||
echo "❌ MariaDB 비밀번호가 일치하지 않습니다."
|
echo "❌ MariaDB 비밀번호가 일치하지 않습니다."
|
||||||
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW2
|
read -p "다시 입력하시겠습니까? (Y/n): " RETRY_DB_PW2 < /dev/tty
|
||||||
RETRY_DB_PW2=${RETRY_DB_PW2:-Y}
|
RETRY_DB_PW2=${RETRY_DB_PW2:-Y}
|
||||||
if [[ ! "$RETRY_DB_PW2" =~ ^[Yy]$ ]]; then
|
if [[ ! "$RETRY_DB_PW2" =~ ^[Yy]$ ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT3
|
read -p "스크립트를 다시 시작하시겠습니까? (Y/n): " RESTART_SCRIPT3 < /dev/tty
|
||||||
RESTART_SCRIPT3=${RESTART_SCRIPT3:-Y}
|
RESTART_SCRIPT3=${RESTART_SCRIPT3:-Y}
|
||||||
if [[ "$RESTART_SCRIPT3" =~ ^[Yy]$ ]]; then
|
if [[ "$RESTART_SCRIPT3" =~ ^[Yy]$ ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
@ -363,7 +379,7 @@ EXISTING_USER=$(mysql -u root -se "SELECT COUNT(*) FROM mysql.user WHERE User='$
|
|||||||
|
|
||||||
if [ "$EXISTING_USER" -gt 0 ]; then
|
if [ "$EXISTING_USER" -gt 0 ]; then
|
||||||
echo "⚠️ DB 사용자 '$DB_USER'이(가) 이미 존재합니다."
|
echo "⚠️ DB 사용자 '$DB_USER'이(가) 이미 존재합니다."
|
||||||
read -p "기존 사용자의 비밀번호를 변경하시겠습니까? (Y/n): " UPDATE_PW
|
read -p "기존 사용자의 비밀번호를 변경하시겠습니까? (Y/n): " UPDATE_PW < /dev/tty
|
||||||
UPDATE_PW=${UPDATE_PW:-Y}
|
UPDATE_PW=${UPDATE_PW:-Y}
|
||||||
if [[ "$UPDATE_PW" =~ ^[Yy]$ ]]; then
|
if [[ "$UPDATE_PW" =~ ^[Yy]$ ]]; then
|
||||||
mysql -u root <<MYSQL_UPDATE
|
mysql -u root <<MYSQL_UPDATE
|
||||||
|
|||||||
Reference in New Issue
Block a user