feat: RDP 제어 스크립트 추가 및 README 업데이트

- rdp-control.sh 추가
  - 명령줄에서 RDP 자동 연결 제어
  - start/stop/status/restart/logs 명령 지원
  - 실시간 상태 모니터링 기능
  - 컬러 출력 및 사용자 친화적 인터페이스
  - 프로세스 추적 및 로그 확인 기능

- README.md 업데이트
  - RDP 제어 스크립트 사용법 추가
  - 주요 기능에 제어 스크립트 설명 추가
  - 권장 명령어로 rdp-control.sh 제시

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root 2025-09-06 01:03:29 +09:00
parent 50bc6f5432
commit 1e238d0867
2 changed files with 290 additions and 2 deletions

View File

@ -41,6 +41,13 @@ bash install_web_control.sh
- **실시간 상태 모니터링**: 서비스 상태 실시간 확인
- **로그 뷰어**: 시스템 로그 확인 기능
### RDP 제어 스크립트 (신규)
- **명령줄 제어**: 터미널에서 간편한 RDP 제어
- **상태 모니터링**: 실시간 연결 상태 확인
- **로그 관리**: RDP 연결 로그 확인 기능
- **자동 재시작**: 연결 문제 시 자동 재시작
- **사용자 친화적**: 컬러 출력 및 직관적 명령어
## 🎯 지원 환경
- **OS**: Proxmox VE 8.x 이상 (Debian 기반)
@ -133,10 +140,31 @@ bash uninstall_web_control.sh
## 🔍 서비스 관리 명령어
### RDP 자동 로그인
### RDP 제어 스크립트 (권장)
```bash
# RDP 자동 연결 시작
bash rdp-control.sh start
# RDP 자동 연결 중지
bash rdp-control.sh stop
# RDP 연결 상태 확인
bash rdp-control.sh status
# RDP 자동 연결 재시작
bash rdp-control.sh restart
# RDP 로그 확인
bash rdp-control.sh logs
# 도움말 보기
bash rdp-control.sh help
```
### systemd 서비스 직접 제어
```bash
# 상태 확인
systemctl status xrdp-autologin.service
systemctl status getty@tty1.service
# 서비스 재시작
systemctl restart xrdp
@ -144,6 +172,7 @@ systemctl restart xrdp-sesman
# 로그 확인
journalctl -u xrdp -f
journalctl -u getty@tty1.service -f
```
### 웹 제어 패널

259
rdp-control.sh Executable file
View File

@ -0,0 +1,259 @@
#!/bin/bash
# RDP Auto-Connect Control Script
# RDP 자동 연결을 켜고 끄는 제어 스크립트
set -euo pipefail
# 색상 코드
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
# RDP 설정 변수
RDP_SERVER="ysleadersos.com:6642"
RDP_USER="doctor-03"
RDP_PASSWORD="@flejtm301"
LOCAL_USER="rdpuser"
# 로그 함수
msg_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
msg_ok() {
echo -e "${GREEN}[OK]${NC} $1"
}
msg_error() {
echo -e "${RED}[ERROR]${NC} $1"
exit 1
}
msg_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
# 도움말 출력
show_help() {
echo -e "${CYAN}RDP Auto-Connect Control Script${NC}"
echo ""
echo "사용법:"
echo " $0 start - RDP 자동 연결 시작"
echo " $0 stop - RDP 자동 연결 중지"
echo " $0 status - RDP 연결 상태 확인"
echo " $0 restart - RDP 자동 연결 재시작"
echo ""
echo "설정 정보:"
echo " RDP 서버: $RDP_SERVER"
echo " RDP 사용자: $RDP_USER"
echo " 로컬 사용자: $LOCAL_USER"
echo ""
}
# 상태 확인
check_status() {
local rdp_running=false
local x_running=false
local getty_enabled=false
# RDP 프로세스 확인
if pgrep -f "xfreerdp3.*$RDP_SERVER" >/dev/null 2>&1; then
rdp_running=true
fi
# X 서버 확인
if pgrep -f "Xorg.*tty1" >/dev/null 2>&1; then
x_running=true
fi
# getty 서비스 확인
if systemctl is-enabled getty@tty1.service >/dev/null 2>&1; then
getty_enabled=true
fi
echo -e "${CYAN}=== RDP 자동 연결 상태 ===${NC}"
echo ""
if $getty_enabled; then
echo -e "자동 로그인: ${GREEN}활성화${NC}"
else
echo -e "자동 로그인: ${RED}비활성화${NC}"
fi
if $x_running; then
echo -e "X 서버: ${GREEN}실행 중${NC}"
else
echo -e "X 서버: ${RED}중지됨${NC}"
fi
if $rdp_running; then
echo -e "RDP 연결: ${GREEN}연결됨${NC}"
echo -e "연결 정보: ${YELLOW}$RDP_USER@$RDP_SERVER${NC}"
else
echo -e "RDP 연결: ${RED}연결 안됨${NC}"
fi
echo ""
# 로그 파일 정보
if [ -f "/home/$LOCAL_USER/rdp.log" ]; then
local log_lines=$(wc -l < "/home/$LOCAL_USER/rdp.log" 2>/dev/null || echo "0")
echo "RDP 로그: $log_lines 줄 (/home/$LOCAL_USER/rdp.log)"
fi
if [ -f "/home/$LOCAL_USER/rdp-error.log" ]; then
local error_lines=$(wc -l < "/home/$LOCAL_USER/rdp-error.log" 2>/dev/null || echo "0")
echo "에러 로그: $error_lines 줄 (/home/$LOCAL_USER/rdp-error.log)"
fi
echo ""
# 전체 상태 요약
if $getty_enabled && $rdp_running; then
echo -e "전체 상태: ${GREEN}정상 작동 중${NC}"
elif $getty_enabled && ! $rdp_running; then
echo -e "전체 상태: ${YELLOW}시작 중 또는 연결 실패${NC}"
else
echo -e "전체 상태: ${RED}비활성화됨${NC}"
fi
}
# RDP 자동 연결 시작
start_rdp() {
msg_info "RDP 자동 연결을 시작합니다..."
# 이미 실행 중인지 확인
if systemctl is-active getty@tty1.service >/dev/null 2>&1; then
msg_warn "RDP 자동 연결이 이미 활성화되어 있습니다."
return 0
fi
# getty 서비스 활성화
systemctl unmask getty@tty1.service >/dev/null 2>&1 || true
systemctl enable getty@tty1.service >/dev/null 2>&1
systemctl start getty@tty1.service
msg_ok "RDP 자동 연결이 시작되었습니다."
# 연결 상태 확인 (최대 10초 대기)
msg_info "RDP 연결을 확인하는 중..."
for i in {1..10}; do
sleep 1
if pgrep -f "xfreerdp3.*$RDP_SERVER" >/dev/null 2>&1; then
msg_ok "RDP 연결이 성공적으로 설정되었습니다."
return 0
fi
echo -n "."
done
echo ""
msg_warn "RDP 연결 확인에 시간이 걸리고 있습니다. 로그를 확인하세요:"
echo " tail -f /home/$LOCAL_USER/rdp.log"
echo " tail -f /home/$LOCAL_USER/rdp-error.log"
}
# RDP 자동 연결 중지
stop_rdp() {
msg_info "RDP 자동 연결을 중지합니다..."
# RDP 프로세스 종료
if pgrep -f "xfreerdp3" >/dev/null 2>&1; then
msg_info "RDP 연결을 종료하는 중..."
pkill -f "xfreerdp3" 2>/dev/null || true
sleep 2
fi
# X 서버 종료
if pgrep -f "Xorg.*tty1" >/dev/null 2>&1; then
msg_info "X 서버를 종료하는 중..."
pkill -f "Xorg.*tty1" 2>/dev/null || true
sleep 2
fi
# getty 서비스 중지 및 비활성화
systemctl stop getty@tty1.service 2>/dev/null || true
systemctl disable getty@tty1.service 2>/dev/null || true
msg_ok "RDP 자동 연결이 중지되었습니다."
# 프로세스 확인
if ! pgrep -f "xfreerdp3" >/dev/null 2>&1; then
msg_ok "모든 RDP 프로세스가 정상적으로 종료되었습니다."
else
msg_warn "일부 RDP 프로세스가 아직 실행 중일 수 있습니다."
fi
}
# RDP 자동 연결 재시작
restart_rdp() {
msg_info "RDP 자동 연결을 재시작합니다..."
stop_rdp
sleep 3
start_rdp
}
# 로그 보기
show_logs() {
echo -e "${CYAN}=== RDP 로그 (최근 20줄) ===${NC}"
if [ -f "/home/$LOCAL_USER/rdp.log" ]; then
tail -20 "/home/$LOCAL_USER/rdp.log" 2>/dev/null || echo "로그 파일을 읽을 수 없습니다."
else
echo "로그 파일이 없습니다."
fi
echo ""
echo -e "${CYAN}=== RDP 에러 로그 (최근 10줄) ===${NC}"
if [ -f "/home/$LOCAL_USER/rdp-error.log" ]; then
tail -10 "/home/$LOCAL_USER/rdp-error.log" 2>/dev/null || echo "에러 로그 파일을 읽을 수 없습니다."
else
echo "에러 로그 파일이 없습니다."
fi
}
# 메인 함수
main() {
# root 권한 확인
if [ "$EUID" -ne 0 ]; then
msg_error "이 스크립트는 root 권한으로 실행해야 합니다."
fi
case "${1:-}" in
"start")
start_rdp
echo ""
check_status
;;
"stop")
stop_rdp
echo ""
check_status
;;
"status")
check_status
;;
"restart")
restart_rdp
echo ""
check_status
;;
"logs")
show_logs
;;
"help"|"-h"|"--help")
show_help
;;
*)
echo -e "${RED}잘못된 명령입니다.${NC}"
echo ""
show_help
exit 1
;;
esac
}
# 스크립트 실행
main "$@"