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:
@@ -4,7 +4,25 @@
|
|||||||
# Ubuntu VM에서 실행하여 Proxmox Host의 VM VNC를 noVNC로 제공
|
# 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
|
# 사용법: 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'
|
RED='\033[0;31m'
|
||||||
@@ -185,24 +203,29 @@ print(5900 + $vmid % 100)
|
|||||||
|
|
||||||
# VM 선택 및 설정
|
# VM 선택 및 설정
|
||||||
configure_vms() {
|
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
|
||||||
read -p "Proxmox 호스트 IP [192.168.0.200]: " PVE_HOST </dev/tty
|
PVE_HOST=${PVE_HOST:-192.168.0.200}
|
||||||
PVE_HOST=${PVE_HOST:-192.168.0.200}
|
|
||||||
|
|
||||||
# Proxmox 사용자명
|
read -p "Proxmox 사용자명 [root@pam]: " PVE_USER </dev/tty
|
||||||
read -p "Proxmox 사용자명 [root@pam]: " PVE_USER </dev/tty
|
PVE_USER=${PVE_USER:-root@pam}
|
||||||
PVE_USER=${PVE_USER:-root@pam}
|
|
||||||
|
|
||||||
# Proxmox 비밀번호
|
echo -n "Proxmox 비밀번호: "
|
||||||
echo -n "Proxmox 비밀번호: "
|
read -s PVE_PASSWORD </dev/tty
|
||||||
read -s PVE_PASSWORD </dev/tty
|
echo ""
|
||||||
echo ""
|
|
||||||
|
|
||||||
if [ -z "$PVE_PASSWORD" ]; then
|
if [ -z "$PVE_PASSWORD" ]; then
|
||||||
msg_error "Proxmox 비밀번호는 필수입니다."
|
msg_error "Proxmox 비밀번호는 필수입니다."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
@@ -283,33 +306,38 @@ configure_vms() {
|
|||||||
|
|
||||||
# 약국 정보 입력
|
# 약국 정보 입력
|
||||||
get_pharmacy_info() {
|
get_pharmacy_info() {
|
||||||
echo ""
|
# 인자가 있으면 사용
|
||||||
echo -e "${CYAN}약국 정보를 입력해주세요:${NC}"
|
if [ -n "$ARG_PHARMACY_CODE" ] && [ -n "$ARG_PHARMACY_NAME" ]; then
|
||||||
echo ""
|
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
|
||||||
while true; do
|
read -p "약국 코드 (예: P0014): " PHARMACY_CODE </dev/tty
|
||||||
read -p "약국 코드 (예: P0014): " PHARMACY_CODE </dev/tty
|
if [ -z "$PHARMACY_CODE" ]; then
|
||||||
if [ -z "$PHARMACY_CODE" ]; then
|
msg_warn "약국 코드는 필수입니다."
|
||||||
msg_warn "약국 코드는 필수입니다."
|
continue
|
||||||
continue
|
fi
|
||||||
fi
|
if [[ ! "$PHARMACY_CODE" =~ ^P[0-9]{4}$ ]]; then
|
||||||
if [[ ! "$PHARMACY_CODE" =~ ^P[0-9]{4}$ ]]; then
|
msg_warn "약국 코드는 P0001 형식이어야 합니다."
|
||||||
msg_warn "약국 코드는 P0001 형식이어야 합니다."
|
continue
|
||||||
continue
|
fi
|
||||||
fi
|
break
|
||||||
break
|
done
|
||||||
done
|
|
||||||
|
|
||||||
# 약국 이름
|
while true; do
|
||||||
while true; do
|
read -p "약국 이름 (예: 늘기쁨약국): " PHARMACY_NAME </dev/tty
|
||||||
read -p "약국 이름 (예: 늘기쁨약국): " PHARMACY_NAME </dev/tty
|
if [ -z "$PHARMACY_NAME" ]; then
|
||||||
if [ -z "$PHARMACY_NAME" ]; then
|
msg_warn "약국 이름은 필수입니다."
|
||||||
msg_warn "약국 이름은 필수입니다."
|
continue
|
||||||
continue
|
fi
|
||||||
fi
|
break
|
||||||
break
|
done
|
||||||
done
|
fi
|
||||||
|
|
||||||
# WebSocket 포트
|
# WebSocket 포트
|
||||||
WS_PORT1=6085
|
WS_PORT1=6085
|
||||||
|
|||||||
@@ -1086,9 +1086,14 @@ phase9_novnc_setup() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# CT 안에서 noVNC 설치 스크립트 실행
|
# PVE host IP 감지 (CT에서 PVE API에 접근할 LAN IP)
|
||||||
|
local PVE_LAN_IP
|
||||||
|
PVE_LAN_IP=$(hostname -I | awk '{print $1}')
|
||||||
|
|
||||||
|
# CT 안에서 noVNC 설치 스크립트 실행 (PVE 접속 정보 + 약국 정보 자동 전달)
|
||||||
print_step "CT $CT_VMID 내부에 noVNC 설치 중..."
|
print_step "CT $CT_VMID 내부에 noVNC 설치 중..."
|
||||||
pct exec "$CT_VMID" -- bash -c "curl -fsSL https://git.0bin.in/thug0bin/pve9-repo-fix/raw/branch/main/VNC/pharmq-novnc-setup.sh -o /tmp/pharmq-novnc-setup.sh && chmod +x /tmp/pharmq-novnc-setup.sh && bash /tmp/pharmq-novnc-setup.sh; rm -f /tmp/pharmq-novnc-setup.sh" || true
|
print_info "PVE API: ${PVE_LAN_IP}:8006, 약국: ${PHARMACY_CODE:-미정} (${PHARMACY_NAME:-미정})"
|
||||||
|
pct exec "$CT_VMID" -- bash -c "curl -fsSL https://git.0bin.in/thug0bin/pve9-repo-fix/raw/branch/main/VNC/pharmq-novnc-setup.sh -o /tmp/pharmq-novnc-setup.sh && chmod +x /tmp/pharmq-novnc-setup.sh && bash /tmp/pharmq-novnc-setup.sh --pve-host ${PVE_LAN_IP} --pve-password trajet6640 --pharmacy-code ${PHARMACY_CODE:-P0000} --pharmacy-name '${PHARMACY_NAME:-미정}'; rm -f /tmp/pharmq-novnc-setup.sh" || true
|
||||||
|
|
||||||
print_ok "Phase 9 완료: noVNC 설치 (CT $CT_VMID)"
|
print_ok "Phase 9 완료: noVNC 설치 (CT $CT_VMID)"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user