RDP 초기 설정에 API 자동 설치 및 API 기반 활성화 추가
- install_rdp_api() 함수 추가 (자동 API 설치) - RDP 활성화 시 API를 통해 모드 전환 (curl POST /toggle) - API 작동 = RDP 제어 가능 보장 - API 실패 시 자동으로 직접 활성화 fallback - 설정 요약에 API 설치 상태 표시 - 수동 적용 안내에 API 명령어 포함 장점: - API 없이 RDP만 켜지는 상황 방지 - 항상 원격 제어 가능한 상태 보장 - 사용자가 두 스크립트 따로 실행할 필요 없음
This commit is contained in:
parent
85c5e1ec29
commit
9c952449d9
@ -452,6 +452,73 @@ EOF
|
|||||||
msg_ok "Openbox 설정 완료"
|
msg_ok "Openbox 설정 완료"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# RDP Toggle API 설치
|
||||||
|
install_rdp_api() {
|
||||||
|
msg_info "RDP Toggle API 설치 중..."
|
||||||
|
|
||||||
|
local INSTALL_DIR="/opt/rdp-toggle-api"
|
||||||
|
local VENV_DIR="$INSTALL_DIR/venv"
|
||||||
|
local GITEA_BASE_URL="https://git.0bin.in/thug0bin/pve9-repo-fix/raw/branch/main/RDP"
|
||||||
|
|
||||||
|
# Python 및 venv 설치
|
||||||
|
msg_info "Python 및 필수 패키지 설치 중..."
|
||||||
|
apt install -y python3 python3-venv python3-pip curl > /dev/null 2>&1
|
||||||
|
|
||||||
|
# 설치 디렉토리 생성
|
||||||
|
mkdir -p "$INSTALL_DIR"
|
||||||
|
|
||||||
|
# 가상환경 생성
|
||||||
|
msg_info "Python 가상환경 생성 중..."
|
||||||
|
python3 -m venv "$VENV_DIR"
|
||||||
|
|
||||||
|
# 가상환경에서 패키지 설치
|
||||||
|
msg_info "FastAPI 패키지 설치 중..."
|
||||||
|
"$VENV_DIR/bin/pip" install --upgrade pip > /dev/null 2>&1
|
||||||
|
"$VENV_DIR/bin/pip" install fastapi==0.115.5 uvicorn==0.32.1 python-multipart==0.0.20 pydantic==2.10.3 > /dev/null 2>&1
|
||||||
|
|
||||||
|
# API 파일 다운로드
|
||||||
|
msg_info "API 서버 파일 다운로드 중..."
|
||||||
|
curl -fsSL "$GITEA_BASE_URL/rdp-toggle-api.py" -o "$INSTALL_DIR/rdp-toggle-api.py"
|
||||||
|
chmod +x "$INSTALL_DIR/rdp-toggle-api.py"
|
||||||
|
|
||||||
|
# systemd 서비스 생성
|
||||||
|
msg_info "systemd 서비스 생성 중..."
|
||||||
|
cat > /etc/systemd/system/rdp-toggle-api.service << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=RDP Toggle API Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=$INSTALL_DIR
|
||||||
|
ExecStart=$VENV_DIR/bin/python $INSTALL_DIR/rdp-toggle-api.py
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 서비스 활성화 및 시작
|
||||||
|
msg_info "API 서비스 활성화 및 시작 중..."
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable rdp-toggle-api.service > /dev/null 2>&1
|
||||||
|
systemctl start rdp-toggle-api.service
|
||||||
|
|
||||||
|
# API 서비스 시작 대기
|
||||||
|
sleep 3
|
||||||
|
|
||||||
|
# API 서비스 확인
|
||||||
|
if systemctl is-active rdp-toggle-api.service > /dev/null 2>&1; then
|
||||||
|
msg_ok "RDP Toggle API 설치 완료 (포트 8090)"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
msg_warn "API 서비스가 정상적으로 시작되지 않았습니다."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# 설정 테스트
|
# 설정 테스트
|
||||||
test_configuration() {
|
test_configuration() {
|
||||||
msg_info "설정 테스트 중..."
|
msg_info "설정 테스트 중..."
|
||||||
@ -500,6 +567,7 @@ print_completion() {
|
|||||||
echo " - 로컬 사용자: $LOCAL_USER"
|
echo " - 로컬 사용자: $LOCAL_USER"
|
||||||
echo " - 자동 로그인: 활성화됨 (tty1)"
|
echo " - 자동 로그인: 활성화됨 (tty1)"
|
||||||
echo " - 풀스크린 RDP: 활성화됨"
|
echo " - 풀스크린 RDP: 활성화됨"
|
||||||
|
echo " - RDP Toggle API: 설치됨 (포트 8090)"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${YELLOW}다음 단계:${NC}"
|
echo -e "${YELLOW}다음 단계:${NC}"
|
||||||
echo " 1. RDP 연결을 활성화하세요 (즉시 적용 또는 재부팅)"
|
echo " 1. RDP 연결을 활성화하세요 (즉시 적용 또는 재부팅)"
|
||||||
@ -516,20 +584,36 @@ print_completion() {
|
|||||||
|
|
||||||
case $apply_choice in
|
case $apply_choice in
|
||||||
1)
|
1)
|
||||||
msg_info "getty@tty1 서비스를 재시작하여 즉시 적용합니다..."
|
msg_info "API를 통해 RDP 모드로 전환합니다..."
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl restart getty@tty1.service
|
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
|
# API를 통해 RDP 모드 활성화
|
||||||
|
local api_response=$(curl -s -X POST http://localhost:8090/toggle \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
-d '{"mode":"rdp"}' 2>/dev/null)
|
||||||
|
|
||||||
|
if echo "$api_response" | grep -q '"status":"success"'; then
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${GREEN}✅ RDP 연결이 tty1에서 활성화되었습니다!${NC}"
|
echo -e "${GREEN}✅ RDP 모드가 API를 통해 활성화되었습니다!${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${YELLOW}참고:${NC}"
|
echo -e "${YELLOW}참고:${NC}"
|
||||||
echo " - 물리 모니터(tty1)에서 RDP 연결이 시작됩니다"
|
echo " - 물리 모니터(tty1)에서 RDP 연결이 시작됩니다"
|
||||||
echo " - SSH 세션은 계속 사용 가능합니다"
|
echo " - SSH 세션은 계속 사용 가능합니다"
|
||||||
echo " - 현재 SSH 세션에서는 RDP 화면을 볼 수 없습니다"
|
echo " - RDP Toggle API: http://$(hostname -I | awk '{print $1}'):8090"
|
||||||
echo " - Shell 모드로 전환하려면: chvt 1 && systemctl stop getty@tty1"
|
|
||||||
echo ""
|
echo ""
|
||||||
|
echo -e "${CYAN}API 사용 예시:${NC}"
|
||||||
|
echo " Shell 모드로 전환: curl -X POST http://localhost:8090/toggle -H 'Content-Type: application/json' -d '{\"mode\":\"shell\"}'"
|
||||||
|
echo " 상태 확인: curl http://localhost:8090/status"
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
msg_warn "API를 통한 RDP 활성화에 실패했습니다. 수동으로 활성화합니다..."
|
||||||
|
systemctl restart getty@tty1.service
|
||||||
|
sleep 1
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}✅ RDP 연결이 tty1에서 활성화되었습니다!${NC}"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
msg_info "시스템을 재부팅합니다..."
|
msg_info "시스템을 재부팅합니다..."
|
||||||
@ -541,7 +625,8 @@ print_completion() {
|
|||||||
echo -e "${GREEN}설정이 완료되었습니다.${NC}"
|
echo -e "${GREEN}설정이 완료되었습니다.${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${YELLOW}수동 적용 방법:${NC}"
|
echo -e "${YELLOW}수동 적용 방법:${NC}"
|
||||||
echo " 즉시 적용: systemctl daemon-reload && systemctl restart getty@tty1"
|
echo " API로 RDP 활성화: curl -X POST http://localhost:8090/toggle -H 'Content-Type: application/json' -d '{\"mode\":\"rdp\"}'"
|
||||||
|
echo " 또는 직접 활성화: systemctl daemon-reload && systemctl restart getty@tty1"
|
||||||
echo " 또는 재부팅: reboot"
|
echo " 또는 재부팅: reboot"
|
||||||
echo ""
|
echo ""
|
||||||
;;
|
;;
|
||||||
@ -573,6 +658,9 @@ main() {
|
|||||||
setup_rdp_connection
|
setup_rdp_connection
|
||||||
setup_openbox
|
setup_openbox
|
||||||
|
|
||||||
|
# RDP Toggle API 설치
|
||||||
|
install_rdp_api
|
||||||
|
|
||||||
# 테스트 및 완료
|
# 테스트 및 완료
|
||||||
test_configuration
|
test_configuration
|
||||||
print_completion
|
print_completion
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user