noVNC 스크립트 CLI 인자 지원 + Phase 9 자동 PVE 접속 정보 전달

- VNC/pharmq-novnc-setup.sh: --pve-host, --pve-password, --pharmacy-code, --pharmacy-name 인자 추가
  - 인자 있으면 대화형 입력 스킵, 없으면 기존대로 대화형
  - set -euo → set -eo (unset 변수 에러 방지)
- pharmq-setup.sh Phase 9: PVE LAN IP 자동 감지 + 약국 정보 인자로 전달

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude
2026-04-08 14:12:32 +00:00
parent 05b01e111b
commit b37b1281a5
2 changed files with 75 additions and 42 deletions

View File

@@ -4,7 +4,25 @@
# Ubuntu VM에서 실행하여 Proxmox Host의 VM VNC를 noVNC로 제공
# 사용법: curl -fsSL https://git.0bin.in/thug0bin/pve9-repo-fix/raw/branch/main/VNC/pharmq-novnc-setup.sh | bash
set -euo pipefail
set -eo pipefail
# 명령행 인자 처리 (통합 스크립트에서 호출 시 사용)
ARG_PVE_HOST=""
ARG_PVE_USER=""
ARG_PVE_PASSWORD=""
ARG_PHARMACY_CODE=""
ARG_PHARMACY_NAME=""
while [[ $# -gt 0 ]]; do
case $1 in
--pve-host) ARG_PVE_HOST="$2"; shift 2 ;;
--pve-user) ARG_PVE_USER="$2"; shift 2 ;;
--pve-password) ARG_PVE_PASSWORD="$2"; shift 2 ;;
--pharmacy-code) ARG_PHARMACY_CODE="$2"; shift 2 ;;
--pharmacy-name) ARG_PHARMACY_NAME="$2"; shift 2 ;;
*) shift ;;
esac
done
# 색상 코드 정의
RED='\033[0;31m'
@@ -185,24 +203,29 @@ print(5900 + $vmid % 100)
# VM 선택 및 설정
configure_vms() {
echo -e "${CYAN}Proxmox API 접속 정보 입력:${NC}"
echo ""
# 인자가 있으면 사용, 없으면 대화형
if [ -n "$ARG_PVE_HOST" ] && [ -n "$ARG_PVE_PASSWORD" ]; then
PVE_HOST="$ARG_PVE_HOST"
PVE_USER="${ARG_PVE_USER:-root@pam}"
PVE_PASSWORD="$ARG_PVE_PASSWORD"
msg_ok "PVE 접속 정보 자동 설정: $PVE_HOST ($PVE_USER)"
else
echo -e "${CYAN}Proxmox API 접속 정보 입력:${NC}"
echo ""
# Proxmox 호스트 IP (기본값: 192.168.0.200)
read -p "Proxmox 호스트 IP [192.168.0.200]: " PVE_HOST </dev/tty
PVE_HOST=${PVE_HOST:-192.168.0.200}
read -p "Proxmox 호스트 IP [192.168.0.200]: " PVE_HOST </dev/tty
PVE_HOST=${PVE_HOST:-192.168.0.200}
# Proxmox 사용자명
read -p "Proxmox 사용자명 [root@pam]: " PVE_USER </dev/tty
PVE_USER=${PVE_USER:-root@pam}
read -p "Proxmox 사용자명 [root@pam]: " PVE_USER </dev/tty
PVE_USER=${PVE_USER:-root@pam}
# Proxmox 비밀번호
echo -n "Proxmox 비밀번호: "
read -s PVE_PASSWORD </dev/tty
echo ""
echo -n "Proxmox 비밀번호: "
read -s PVE_PASSWORD </dev/tty
echo ""
if [ -z "$PVE_PASSWORD" ]; then
msg_error "Proxmox 비밀번호는 필수입니다."
if [ -z "$PVE_PASSWORD" ]; then
msg_error "Proxmox 비밀번호는 필수입니다."
fi
fi
echo ""
@@ -283,33 +306,38 @@ configure_vms() {
# 약국 정보 입력
get_pharmacy_info() {
echo ""
echo -e "${CYAN}약국 정보를 입력해주세요:${NC}"
echo ""
# 인자가 있으면 사용
if [ -n "$ARG_PHARMACY_CODE" ] && [ -n "$ARG_PHARMACY_NAME" ]; then
PHARMACY_CODE="$ARG_PHARMACY_CODE"
PHARMACY_NAME="$ARG_PHARMACY_NAME"
msg_ok "약국 정보 자동 설정: $PHARMACY_CODE ($PHARMACY_NAME)"
else
echo ""
echo -e "${CYAN}약국 정보를 입력해주세요:${NC}"
echo ""
# 약국 코드
while true; do
read -p "약국 코드 (예: P0014): " PHARMACY_CODE </dev/tty
if [ -z "$PHARMACY_CODE" ]; then
msg_warn "약국 코드는 필수입니다."
continue
fi
if [[ ! "$PHARMACY_CODE" =~ ^P[0-9]{4}$ ]]; then
msg_warn "약국 코드는 P0001 형식이어야 합니다."
continue
fi
break
done
while true; do
read -p "약국 코드 (예: P0014): " PHARMACY_CODE </dev/tty
if [ -z "$PHARMACY_CODE" ]; then
msg_warn "약국 코드는 필수입니다."
continue
fi
if [[ ! "$PHARMACY_CODE" =~ ^P[0-9]{4}$ ]]; then
msg_warn "약국 코드는 P0001 형식이어야 합니다."
continue
fi
break
done
# 약국 이름
while true; do
read -p "약국 이름 (예: 늘기쁨약국): " PHARMACY_NAME </dev/tty
if [ -z "$PHARMACY_NAME" ]; then
msg_warn "약국 이름은 필수입니다."
continue
fi
break
done
while true; do
read -p "약국 이름 (예: 늘기쁨약국): " PHARMACY_NAME </dev/tty
if [ -z "$PHARMACY_NAME" ]; then
msg_warn "약국 이름은 필수입니다."
continue
fi
break
done
fi
# WebSocket 포트
WS_PORT1=6085