diff --git a/proxmox-auto-rdp-setup.sh b/proxmox-auto-rdp-setup.sh index 9285b54..b7daf8a 100755 --- a/proxmox-auto-rdp-setup.sh +++ b/proxmox-auto-rdp-setup.sh @@ -49,17 +49,36 @@ print_header() { check_proxmox_version() { msg_info "Proxmox VE 버전 확인 중..." - if [ ! -f /etc/pve/.version ]; then + # Proxmox VE 설치 확인 + if [ ! -f /etc/pve/.version ] && ! command -v pveversion > /dev/null 2>&1; then msg_error "Proxmox VE가 설치되어 있지 않습니다." fi - local pve_version=$(pveversion | head -n1 | awk '{print $2}' | cut -d'.' -f1) - - if [ "$pve_version" -lt 8 ]; then - msg_error "지원되지 않는 Proxmox VE 버전입니다. 8.x 이상이 필요합니다." + # 버전 정보 추출 (더 안전한 방식) + local version_info + if command -v pveversion > /dev/null 2>&1; then + version_info=$(pveversion 2>/dev/null | head -n1 | awk '{print $2}' 2>/dev/null || echo "unknown") + else + version_info="unknown" fi - msg_ok "Proxmox VE $pve_version.x 버전 확인됨" + # 버전이 숫자인지 확인 + if [[ "$version_info" =~ ^[0-9]+\.[0-9]+ ]]; then + local pve_version=$(echo "$version_info" | cut -d'.' -f1) + + if [ "$pve_version" -lt 8 ]; then + msg_error "지원되지 않는 Proxmox VE 버전입니다. 8.x 이상이 필요합니다." + fi + + msg_ok "Proxmox VE $pve_version.x 버전 확인됨" + else + msg_warn "Proxmox VE 버전을 확인할 수 없습니다. 계속 진행합니다..." + read -p "계속 진행하시겠습니까? [y/N]: " continue_anyway + case $continue_anyway in + [yY]|[yY][eE][sS]) ;; + *) msg_error "설정이 취소되었습니다." ;; + esac + fi } # 루트 권한 확인 @@ -294,11 +313,49 @@ install_packages() { done done - # 설치 확인 + # 설치 확인 (더 유연한 방식) msg_info "설치된 패키지 확인 중..." for package in $packages; do - if ! dpkg -l | grep -q "^ii $package "; then + local installed=false + + # 직접 패키지명 확인 + if dpkg -l | grep -q "^ii $package "; then + installed=true + else + # 패키지명이 다를 수 있으므로 부분 매치 확인 + case $package in + "openbox") + if dpkg -l | grep -q "^ii openbox" || command -v openbox > /dev/null 2>&1; then + installed=true + fi + ;; + "xorg") + if dpkg -l | grep -q "^ii.*xorg" || command -v startx > /dev/null 2>&1; then + installed=true + fi + ;; + "freerdp3-x11") + if dpkg -l | grep -q "^ii.*freerdp" || command -v xfreerdp3 > /dev/null 2>&1; then + installed=true + fi + ;; + "unclutter") + if dpkg -l | grep -q "^ii unclutter" || command -v unclutter > /dev/null 2>&1; then + installed=true + fi + ;; + *) + if dpkg -l | grep -q "^ii $package " || command -v "$package" > /dev/null 2>&1; then + installed=true + fi + ;; + esac + fi + + if [ "$installed" = false ]; then msg_error "$package가 정상적으로 설치되지 않았습니다." + else + msg_info " ✓ $package 설치 확인됨" fi done