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:
parent
50bc6f5432
commit
1e238d0867
33
README.md
33
README.md
@ -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
259
rdp-control.sh
Executable 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 "$@"
|
||||
Loading…
Reference in New Issue
Block a user