From 02137c50a8f368d4765d07e6c35f871db39eb050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=9C=EA=B3=A8=EC=95=BD=EC=82=AC?= Date: Sat, 15 Nov 2025 00:37:27 +0000 Subject: [PATCH] Fix stdin issue for curl | bash execution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pbs_allinone.sh 입력 문제 수정: - 모든 read -p 명령어에 < /dev/tty 추가 - curl | bash 실행 시 stdin 소진 문제 해결 - 사용자 입력이 정상적으로 작동하도록 수정 수정된 read 명령어: - PBS 스토리지 재등록 확인 - 백업 타입 입력 (vm/ct) - 백업 ID 입력 - 복구 VM/CT ID 입력 - 저장 스토리지 입력 - 복구 확인 - 기존 VM/CT 삭제 확인 - VM/CT 시작 확인 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- pbs_allinone.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pbs_allinone.sh b/pbs_allinone.sh index be141e7..69209f0 100644 --- a/pbs_allinone.sh +++ b/pbs_allinone.sh @@ -71,7 +71,7 @@ register_pbs() { # 이미 등록되어 있는지 확인 if pvesm status | grep -q "^${PBS_STORAGE_NAME} "; then log_warning "PBS 스토리지가 이미 등록되어 있습니다." - read -p "$(echo -e ${YELLOW}재등록하시겠습니까?${NC}) (y/N): " reregister + read -p "$(echo -e ${YELLOW}재등록하시겠습니까?${NC}) (y/N): " reregister < /dev/tty if [[ "$reregister" =~ ^[Yy]$ ]]; then log_info "기존 PBS 스토리지 제거 중..." @@ -260,14 +260,14 @@ PYEOF # 백업 선택 echo "" while true; do - read -p "$(echo -e ${CYAN}백업 타입${NC}) (vm/ct): " BACKUP_TYPE + read -p "$(echo -e ${CYAN}백업 타입${NC}) (vm/ct): " BACKUP_TYPE < /dev/tty if [[ "$BACKUP_TYPE" =~ ^(vm|ct)$ ]]; then break fi log_error "vm 또는 ct를 입력하세요" done - read -p "$(echo -e ${CYAN}백업 ID${NC}): " TEMPLATE_VMID + read -p "$(echo -e ${CYAN}백업 ID${NC}): " TEMPLATE_VMID < /dev/tty if [ -z "$TEMPLATE_VMID" ]; then log_error "백업 ID는 필수입니다" exit 1 @@ -358,7 +358,7 @@ get_restore_config() { echo "" # 복구할 VM/CT ID - read -p "$(echo -e ${CYAN}복구할 VM/CT ID${NC}) [기본값: ${TEMPLATE_VMID}]: " TARGET_VMID + read -p "$(echo -e ${CYAN}복구할 VM/CT ID${NC}) [기본값: ${TEMPLATE_VMID}]: " TARGET_VMID < /dev/tty TARGET_VMID=${TARGET_VMID:-$TEMPLATE_VMID} # 사용 가능한 스토리지 목록 표시 @@ -366,7 +366,7 @@ get_restore_config() { # 스토리지 선택 while true; do - read -p "$(echo -e ${CYAN}저장 스토리지 이름${NC}) [기본값: local-lvm]: " input_storage + read -p "$(echo -e ${CYAN}저장 스토리지 이름${NC}) [기본값: local-lvm]: " input_storage < /dev/tty TARGET_STORAGE=${input_storage:-local-lvm} # 입력한 스토리지가 존재하는지 확인 @@ -393,7 +393,7 @@ get_restore_config() { echo " 저장 위치: ${TARGET_STORAGE}" echo "" - read -p "$(echo -e ${YELLOW}이 설정으로 복구하시겠습니까?${NC}) (y/N): " confirm + read -p "$(echo -e ${YELLOW}이 설정으로 복구하시겠습니까?${NC}) (y/N): " confirm < /dev/tty if [[ ! "$confirm" =~ ^[Yy]$ ]]; then log_info "작업 취소됨" exit 0 @@ -413,7 +413,7 @@ restore_backup() { # 기존 VM/CT 확인 if qm status ${TARGET_VMID} 2>/dev/null || pct status ${TARGET_VMID} 2>/dev/null; then log_warning "VM/CT ${TARGET_VMID}가 이미 존재합니다" - read -p "$(echo -e ${YELLOW}삭제하고 복구하시겠습니까?${NC}) (y/N): " delete_confirm + read -p "$(echo -e ${YELLOW}삭제하고 복구하시겠습니까?${NC}) (y/N): " delete_confirm < /dev/tty if [[ "$delete_confirm" =~ ^[Yy]$ ]]; then log_info "기존 VM/CT 삭제 중..." @@ -473,7 +473,7 @@ restore_backup() { # VM/CT 시작 start_vm() { echo "" - read -p "$(echo -e ${YELLOW}VM/CT를 바로 시작하시겠습니까?${NC}) (y/N): " start_confirm + read -p "$(echo -e ${YELLOW}VM/CT를 바로 시작하시겠습니까?${NC}) (y/N): " start_confirm < /dev/tty if [[ "$start_confirm" =~ ^[Yy]$ ]]; then log_info "VM/CT 시작 중..."