Add --vm-id, --vm-vmid, --vm-storage for fully non-interactive PBS restore
Auto-selects VM backup, target VMID, storage, and auto-confirms existing VM deletion. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,16 +25,22 @@ ARGS_OWNER=""
|
|||||||
ARGS_PHONE=""
|
ARGS_PHONE=""
|
||||||
ARGS_MSSQL=""
|
ARGS_MSSQL=""
|
||||||
SKIP_PBS=false
|
SKIP_PBS=false
|
||||||
|
ARGS_VM_ID=""
|
||||||
|
ARGS_VM_VMID=""
|
||||||
|
ARGS_VM_STORAGE=""
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
--name) ARGS_NAME="$2"; shift 2 ;;
|
--name) ARGS_NAME="$2"; shift 2 ;;
|
||||||
--hira) ARGS_HIRA="$2"; shift 2 ;;
|
--hira) ARGS_HIRA="$2"; shift 2 ;;
|
||||||
--addr) ARGS_ADDR="$2"; shift 2 ;;
|
--addr) ARGS_ADDR="$2"; shift 2 ;;
|
||||||
--owner) ARGS_OWNER="$2"; shift 2 ;;
|
--owner) ARGS_OWNER="$2"; shift 2 ;;
|
||||||
--phone) ARGS_PHONE="$2"; shift 2 ;;
|
--phone) ARGS_PHONE="$2"; shift 2 ;;
|
||||||
--mssql) ARGS_MSSQL="$2"; shift 2 ;;
|
--mssql) ARGS_MSSQL="$2"; shift 2 ;;
|
||||||
--skip-pbs) SKIP_PBS=true; shift ;;
|
--skip-pbs) SKIP_PBS=true; shift ;;
|
||||||
|
--vm-id) ARGS_VM_ID="$2"; shift 2 ;;
|
||||||
|
--vm-vmid) ARGS_VM_VMID="$2"; shift 2 ;;
|
||||||
|
--vm-storage) ARGS_VM_STORAGE="$2"; shift 2 ;;
|
||||||
--help|-h)
|
--help|-h)
|
||||||
echo "사용법: pharmq-setup.sh [옵션]"
|
echo "사용법: pharmq-setup.sh [옵션]"
|
||||||
echo " --name 약국명 (필수 또는 대화형 입력)"
|
echo " --name 약국명 (필수 또는 대화형 입력)"
|
||||||
@@ -421,9 +427,12 @@ else:
|
|||||||
PYEOF
|
PYEOF
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
# --skip-pbs 옵션이면 자동 스킵
|
# --skip-pbs: PBS 스킵 / --vm-id: 자동 선택 / 없으면 대화형
|
||||||
if [ "$SKIP_PBS" = true ]; then
|
if [ "$SKIP_PBS" = true ]; then
|
||||||
TEMPLATE_VMID=""
|
TEMPLATE_VMID=""
|
||||||
|
elif [ -n "$ARGS_VM_ID" ]; then
|
||||||
|
TEMPLATE_VMID="$ARGS_VM_ID"
|
||||||
|
print_ok "VM 백업 자동 선택: $TEMPLATE_VMID"
|
||||||
else
|
else
|
||||||
echo -ne "${CYAN}복원할 VM 백업 ID (숫자, Enter로 건너뛰기): ${NC}"
|
echo -ne "${CYAN}복원할 VM 백업 ID (숫자, Enter로 건너뛰기): ${NC}"
|
||||||
read -r TEMPLATE_VMID </dev/tty
|
read -r TEMPLATE_VMID </dev/tty
|
||||||
@@ -437,23 +446,31 @@ PYEOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 복원 VMID
|
# 복원 VMID
|
||||||
echo -ne "${CYAN}복원할 VMID [기본: 200]: ${NC}"
|
if [ -n "$ARGS_VM_VMID" ]; then
|
||||||
read -r VM_VMID </dev/tty
|
VM_VMID="$ARGS_VM_VMID"
|
||||||
VM_VMID=${VM_VMID:-200}
|
else
|
||||||
|
echo -ne "${CYAN}복원할 VMID [기본: 200]: ${NC}"
|
||||||
|
read -r VM_VMID </dev/tty
|
||||||
|
VM_VMID=${VM_VMID:-200}
|
||||||
|
fi
|
||||||
|
|
||||||
# 스토리지 선택
|
# 스토리지 선택
|
||||||
echo ""
|
if [ -n "$ARGS_VM_STORAGE" ]; then
|
||||||
print_step "사용 가능한 스토리지:"
|
TARGET_STORAGE="$ARGS_VM_STORAGE"
|
||||||
pvesm status -content images 2>/dev/null | tail -n +2 | while read -r line; do
|
else
|
||||||
sname=$(echo "$line" | awk '{print $1}')
|
echo ""
|
||||||
stype=$(echo "$line" | awk '{print $2}')
|
print_step "사용 가능한 스토리지:"
|
||||||
echo -e " ${GREEN}●${NC} ${sname} (${stype})"
|
pvesm status -content images 2>/dev/null | tail -n +2 | while read -r line; do
|
||||||
done
|
sname=$(echo "$line" | awk '{print $1}')
|
||||||
echo ""
|
stype=$(echo "$line" | awk '{print $2}')
|
||||||
|
echo -e " ${GREEN}●${NC} ${sname} (${stype})"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
|
||||||
echo -ne "${CYAN}저장 스토리지 [기본: local-lvm]: ${NC}"
|
echo -ne "${CYAN}저장 스토리지 [기본: local-lvm]: ${NC}"
|
||||||
read -r TARGET_STORAGE </dev/tty
|
read -r TARGET_STORAGE </dev/tty
|
||||||
TARGET_STORAGE=${TARGET_STORAGE:-local-lvm}
|
TARGET_STORAGE=${TARGET_STORAGE:-local-lvm}
|
||||||
|
fi
|
||||||
|
|
||||||
# 최신 스냅샷 찾기
|
# 최신 스냅샷 찾기
|
||||||
print_step "최신 백업 조회 중..."
|
print_step "최신 백업 조회 중..."
|
||||||
@@ -485,8 +502,13 @@ PYEOF
|
|||||||
# 기존 VM 확인
|
# 기존 VM 확인
|
||||||
if qm status "$VM_VMID" 2>/dev/null; then
|
if qm status "$VM_VMID" 2>/dev/null; then
|
||||||
print_warn "VMID $VM_VMID가 이미 존재합니다."
|
print_warn "VMID $VM_VMID가 이미 존재합니다."
|
||||||
echo -ne "${YELLOW}삭제하고 복원하시겠습니까? (y/N): ${NC}"
|
if [ -n "$ARGS_VM_ID" ]; then
|
||||||
read -r confirm </dev/tty
|
# 자동 모드 — 기존 VM 자동 삭제
|
||||||
|
confirm="y"
|
||||||
|
else
|
||||||
|
echo -ne "${YELLOW}삭제하고 복원하시겠습니까? (y/N): ${NC}"
|
||||||
|
read -r confirm </dev/tty
|
||||||
|
fi
|
||||||
if [[ "$confirm" =~ ^[Yy]$ ]]; then
|
if [[ "$confirm" =~ ^[Yy]$ ]]; then
|
||||||
qm stop "$VM_VMID" --skiplock 2>/dev/null || true
|
qm stop "$VM_VMID" --skiplock 2>/dev/null || true
|
||||||
sleep 2
|
sleep 2
|
||||||
|
|||||||
Reference in New Issue
Block a user