- X 서버 프로세스 검출 패턴 수정 (Xorg.*tty1 → /usr/lib/xorg/Xorg) - RDP 연결 상태 검사 개선으로 실제 실행 상태 정확히 반영 - Gitea 리포지토리 설정 가이드 문서 추가 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
259 lines
6.7 KiB
Bash
Executable File
259 lines
6.7 KiB
Bash
Executable File
#!/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" >/dev/null 2>&1; then
|
|
rdp_running=true
|
|
fi
|
|
|
|
# X 서버 확인
|
|
if pgrep -f "/usr/lib/xorg/Xorg" >/dev/null 2>&1 || pgrep -f "Xorg.*vt1" >/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 "$@" |