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