2025-12-19 20:23:59 +09:00
2025-12-19 19:18:16 +09:00
2025-12-19 19:18:16 +09:00
2025-12-19 20:23:59 +09:00
2025-10-05 17:37:51 +09:00
2025-11-28 18:27:15 +09:00
2025-10-21 20:29:39 +09:00
2025-12-19 19:18:16 +09:00
2025-11-28 18:27:15 +09:00
2025-12-19 19:18:16 +09:00
2025-12-19 20:23:59 +09:00
2025-11-28 18:27:15 +09:00
2025-12-19 16:23:03 +09:00
2025-11-28 18:27:15 +09:00
2025-11-28 18:27:15 +09:00
2025-11-28 18:27:15 +09:00

iDRAC Info Manager

Dell iDRAC 서버 관리 및 펌웨어 업데이트 자동화를 위한 Flask 기반 웹 애플리케이션

📋 목차

📖 소개

iDRAC Info Manager는 Dell iDRAC(Integrated Dell Remote Access Controller) 서버를 효율적으로 관리하고 펌웨어 업데이트를 자동화하기 위한 웹 기반 도구입니다.

이 애플리케이션은 다음과 같은 시나리오에서 유용합니다:

  • 여러 대의 Dell 서버를 동시에 관리해야 할 때
  • 펌웨어 카탈로그를 주기적으로 업데이트하고 관리해야 할 때
  • iDRAC 설정을 XML 파일로 관리하고 배포해야 할 때
  • 서버 하드웨어 정보(MAC, GUID, GPU 등)를 수집하고 관리해야 할 때
  • Telegram을 통해 서버 관리 알림을 받고 싶을 때

주요 기능

🖥️ iDRAC 서버 관리

  • Redfish API 통합: Dell Redfish API를 통한 서버 정보 조회 및 제어
  • 다중 IP 처리: 여러 서버에 대한 일괄 작업 실행
  • 실시간 모니터링: SocketIO를 통한 실시간 작업 진행 상황 확인
  • 작업 큐 관리: 백그라운드 작업 스케줄링 및 상태 추적

📦 펌웨어 관리

  • Dell 카탈로그 동기화: Dell 공식 펌웨어 카탈로그 자동 다운로드 및 파싱
  • DRM 통합: Dell Repository Manager(DRM) XML 파일 지원
  • 펌웨어 버전 추적: 서버별 펌웨어 버전 비교 및 업데이트 필요 여부 확인
  • 카탈로그 관리: 여러 펌웨어 카탈로그 버전 관리 및 전환

📄 XML 설정 관리

  • XML 파일 업로드: iDRAC 설정 XML 파일 업로드 및 저장
  • 설정 편집: 웹 인터페이스를 통한 XML 설정 편집
  • SCP 파일 관리: Server Configuration Profile 파일 관리
  • 자동 백업: 파일 변경 시 자동 백업 생성

📊 데이터 수집 및 변환

  • MAC 주소 수집: 서버 네트워크 인터페이스 MAC 주소 수집
  • GUID 추출: 서버 GUID 정보 추출 및 관리
  • GPU 시리얼 수집: GPU 하드웨어 시리얼 번호 수집
  • Excel 변환: 수집된 데이터를 Excel 파일로 자동 변환
  • 서버 리스트 관리: 서버 목록 관리 및 매핑

👥 사용자 관리

  • 인증 시스템: Flask-Login 기반 보안 인증
  • 사용자 승인 워크플로우: 신규 사용자 등록 시 관리자 승인 필요
  • Telegram 승인: Telegram 봇을 통한 사용자 승인/거부
  • 비밀번호 암호화: Argon2 해싱을 통한 안전한 비밀번호 저장
  • 세션 관리: 자동 로그아웃 및 세션 타임아웃

📱 Telegram 봇 통합

  • 실시간 알림: 로그인, 회원가입, 작업 완료 알림
  • 인터랙티브 승인: 인라인 버튼을 통한 사용자 승인/거부
  • 봇 폴링 서비스: 백그라운드 스레드에서 실행되는 봇 서비스
  • 중복 실행 방지: 봇 인스턴스 중복 실행 방지 메커니즘

🔍 실시간 파일 모니터링

  • Watchdog 통합: 파일 시스템 변경 실시간 감지
  • 자동 UI 업데이트: 파일 변경 시 웹 인터페이스 자동 갱신
  • 이벤트 로깅: 파일 생성, 수정, 삭제 이벤트 로깅

🛠 기술 스택

Backend Framework

  • Flask 3.1.2: 경량 웹 프레임워크
  • Flask-SocketIO 5.5.1: 실시간 양방향 통신
  • Flask-Login 0.6.3: 사용자 인증 및 세션 관리
  • Flask-Migrate 4.1.0: 데이터베이스 마이그레이션
  • Flask-WTF 1.2.2: 폼 처리 및 CSRF 보호

Database

  • SQLAlchemy 2.0.43: ORM (Object-Relational Mapping)
  • Flask-SQLAlchemy 3.1.1: Flask-SQLAlchemy 통합
  • Alembic 1.16.5: 데이터베이스 마이그레이션 도구
  • SQLite: 기본 데이터베이스 (운영 환경에서는 PostgreSQL/MySQL 권장)

Security

  • Argon2-cffi 25.1.0: 비밀번호 해싱
  • Flask-WTF: CSRF 토큰 보호
  • Werkzeug 3.1.3: 보안 유틸리티

Data Processing

  • Pandas 2.3.3: 데이터 분석 및 처리
  • NumPy 2.3.3: 수치 연산
  • OpenPyXL 3.1.5: Excel 파일 생성 및 편집
  • Chardet 5.2.0: 문자 인코딩 자동 감지
  • Natsort 8.4.0: 자연스러운 정렬

Real-time Communication

  • Python-SocketIO 5.14.1: SocketIO 서버 구현
  • Python-EngineIO 4.12.3: EngineIO 프로토콜
  • Simple-WebSocket 1.1.0: WebSocket 통신

Monitoring & Notifications

  • Watchdog 6.0.0: 파일 시스템 모니터링
  • Python-Telegram-Bot 22.5: Telegram 봇 API

HTTP & API

  • Requests 2.32.3: HTTP 클라이언트
  • DNSPython 2.8.0: DNS 조회

Frontend

  • Bootstrap 5: 반응형 UI 프레임워크
  • Bootstrap Icons: 아이콘 세트
  • Socket.IO Client: 실시간 통신 클라이언트
  • JavaScript (ES6+): 클라이언트 사이드 로직

Development & Testing

  • Pytest 8.0.0: 테스트 프레임워크
  • Pytest-Mock 3.12.0: 모킹 라이브러리
  • Python-Dotenv 1.0.1: 환경 변수 관리

🏗️ 시스템 아키텍처

┌─────────────────────────────────────────────────────────────┐
│                        Client Browser                        │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │   HTML/CSS   │  │  JavaScript  │  │ SocketIO CLI │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
└─────────────────────────────────────────────────────────────┘
                            ↕ HTTP/WebSocket
┌─────────────────────────────────────────────────────────────┐
│                      Flask Application                       │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                    Routes Layer                       │  │
│  │  • auth.py (인증)  • main.py (메인)                  │  │
│  │  • admin.py (관리) • api.py (API)                    │  │
│  └──────────────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                  Services Layer                       │  │
│  │  • redfish_client.py (iDRAC 통신)                    │  │
│  │  • firmware_service.py (펌웨어 관리)                 │  │
│  │  • watchdog_handler.py (파일 모니터링)               │  │
│  │  • logger.py (로깅)                                   │  │
│  └──────────────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────────────┐  │
│  │                   Models Layer                        │  │
│  │  • user.py (사용자)  • job.py (작업)                 │  │
│  │  • firmware.py (펌웨어)                               │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                            ↕
┌─────────────────────────────────────────────────────────────┐
│                    External Services                         │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │  SQLite DB   │  │ Telegram Bot │  │ Dell Redfish │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
└─────────────────────────────────────────────────────────────┘

주요 컴포넌트

  1. Routes (라우트)

    • 사용자 요청을 받아 적절한 서비스로 전달
    • 인증, 권한 검사, 입력 검증 수행
  2. Services (서비스)

    • 비즈니스 로직 구현
    • 외부 API 통신 (Redfish, Telegram)
    • 파일 처리 및 데이터 변환
  3. Models (모델)

    • 데이터베이스 스키마 정의
    • ORM을 통한 데이터 접근
  4. SocketIO Events

    • 실시간 양방향 통신
    • 진행 상황 업데이트
    • 파일 변경 알림

🚀 시작하기

필수 요구사항

  • Python 3.8 이상 (Python 3.10+ 권장)
  • pip (Python 패키지 관리자)
  • Git (버전 관리)
  • Dell iDRAC 9 이상 (Redfish API 지원)

설치 방법

Windows

# 1. 저장소 클론
git clone https://github.com/yourusername/idrac_info.git
cd idrac_info

# 2. 가상환경 생성 및 활성화
python -m venv venv
.\venv\Scripts\Activate.ps1

# 3. 의존성 설치
pip install -r requirements.txt

# 4. 환경 변수 설정 (.env 파일 생성)
Copy-Item .env.example .env
# .env 파일을 편집하여 필요한 값 설정

# 5. 데이터베이스 초기화
flask db upgrade

# 6. 애플리케이션 실행
python app.py

Linux / macOS

# 1. 저장소 클론
git clone https://github.com/yourusername/idrac_info.git
cd idrac_info

# 2. 가상환경 생성 및 활성화
python3 -m venv venv
source venv/bin/activate

# 3. 의존성 설치
pip install -r requirements.txt

# 4. 환경 변수 설정 (.env 파일 생성)
cp .env.example .env
# .env 파일을 편집하여 필요한 값 설정

# 5. 데이터베이스 초기화
flask db upgrade

# 6. 애플리케이션 실행
python app.py

환경 설정

.env 파일을 생성하고 다음 내용을 설정하세요:

# ========================================
# Flask 기본 설정
# ========================================
SECRET_KEY=your-super-secret-key-change-this-in-production
FLASK_ENV=development
FLASK_DEBUG=true
FLASK_HOST=0.0.0.0
FLASK_PORT=5000

# ========================================
# 데이터베이스 설정
# ========================================
# SQLite (개발용)
DATABASE_URL=sqlite:///backend/instance/site.db

# PostgreSQL (운영용 - 권장)
# DATABASE_URL=postgresql://username:password@localhost:5432/idrac_info

# MySQL (운영용)
# DATABASE_URL=mysql://username:password@localhost:3306/idrac_info

# ========================================
# Redfish API 설정
# ========================================
REDFISH_TIMEOUT=15
REDFISH_VERIFY_SSL=false

# ========================================
# Telegram Bot 설정 (선택 사항)
# ========================================
# Telegram BotFather에서 봇 생성 후 토큰 입력
TELEGRAM_BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
# Telegram에서 본인의 Chat ID 입력
TELEGRAM_CHAT_ID=123456789

# ========================================
# 데이터 디렉토리 설정
# ========================================
APP_DATA_DIR=./data

# ========================================
# 업로드 및 파일 설정
# ========================================
MAX_CONTENT_LENGTH=10485760  # 10MB
FILES_PER_PAGE=35
BACKUP_FILES_PER_PAGE=3

# ========================================
# 작업 처리 설정
# ========================================
MAX_WORKERS=60  # 동시 처리 가능한 최대 작업 수

# ========================================
# 세션 설정
# ========================================
SESSION_MINUTES=30  # 세션 타임아웃 (분)

# ========================================
# SocketIO 설정
# ========================================
# threading (Windows 권장) / eventlet (Linux 권장)
SOCKETIO_ASYNC_MODE=threading

# ========================================
# 데이터베이스 자동 부트스트랩 (개발용만)
# ========================================
AUTO_BOOTSTRAP_DB=false

초기 관리자 계정 생성

# Flask shell 실행
flask shell

# Python 인터프리터에서 실행
>>> from backend.models.user import db, User
>>> admin = User(username='admin', email='admin@example.com', is_admin=True, is_approved=True)
>>> admin.set_password('your-admin-password')
>>> db.session.add(admin)
>>> db.session.commit()
>>> exit()

실행 방법

# 개발 서버 실행
python app.py

# 또는 Flask CLI 사용
flask run

# 특정 호스트/포트 지정
flask run --host=0.0.0.0 --port=8080

브라우저에서 http://localhost:5000 접속

📁 프로젝트 구조

idrac_info/
├── app.py                          # 메인 애플리케이션 엔트리포인트
├── config.py                       # 애플리케이션 설정
├── requirements.txt                # Python 의존성 목록
├── telegram_bot_service.py         # Telegram 봇 폴링 서비스
├── migrate_passwords.py            # 비밀번호 마이그레이션 스크립트
├── update_db.py                    # 데이터베이스 업데이트 스크립트
├── update_user_approval.py         # 사용자 승인 상태 업데이트 스크립트
├── check_telegram.py               # Telegram 설정 확인 스크립트
│
├── .env                            # 환경 변수 (git에서 제외)
├── .gitignore                      # Git 제외 파일 목록
│
├── backend/                        # 백엔드 코드
│   ├── __init__.py
│   │
│   ├── models/                     # 데이터베이스 모델
│   │   ├── __init__.py
│   │   ├── user.py                 # 사용자 모델
│   │   ├── job.py                  # 작업 모델
│   │   ├── firmware.py             # 펌웨어 모델
│   │   └── telegram_bot.py         # Telegram 봇 모델
│   │
│   ├── routes/                     # 라우트 핸들러
│   │   ├── __init__.py
│   │   ├── main.py                 # 메인 페이지 라우트
│   │   ├── auth.py                 # 인증 라우트
│   │   ├── admin.py                # 관리자 라우트
│   │   ├── api.py                  # API 엔드포인트
│   │   ├── firmware.py             # 펌웨어 관리 라우트
│   │   └── xml_routes.py           # XML 파일 관리 라우트
│   │
│   ├── services/                   # 비즈니스 로직
│   │   ├── __init__.py
│   │   ├── redfish_client.py       # Redfish API 클라이언트
│   │   ├── firmware_service.py     # 펌웨어 관리 서비스
│   │   ├── drm_parser.py           # DRM XML 파서
│   │   ├── watchdog_handler.py     # 파일 모니터링
│   │   ├── logger.py               # 로깅 설정
│   │   ├── platform_utils.py       # 플랫폼 유틸리티
│   │   └── file_utils.py           # 파일 유틸리티
│   │
│   ├── forms/                      # WTForms 폼
│   │   ├── __init__.py
│   │   ├── auth_forms.py           # 인증 폼
│   │   └── admin_forms.py          # 관리자 폼
│   │
│   ├── templates/                  # Jinja2 템플릿
│   │   ├── base.html               # 기본 레이아웃
│   │   ├── index.html               # 메인 페이지
│   │   ├── login.html              # 로그인 페이지
│   │   ├── register.html           # 회원가입 페이지
│   │   ├── admin.html              # 관리자 페이지
│   │   ├── admin_settings.html     # 관리자 설정
│   │   ├── jobs.html               # 작업 관리
│   │   ├── idrac_firmware.html     # 펌웨어 관리
│   │   ├── xml_files.html          # XML 파일 목록
│   │   └── edit_xml.html           # XML 편집기
│   │
│   ├── static/                     # 정적 파일
│   │   ├── css/
│   │   │   ├── admin.css
│   │   │   ├── admin_settings.css
│   │   │   ├── edit_xml.css
│   │   │   ├── index.css
│   │   │   └── jobs.css
│   │   ├── js/
│   │   │   ├── admin.js
│   │   │   ├── admin_settings.js
│   │   │   ├── edit_xml.js
│   │   │   ├── index.js
│   │   │   └── jobs.js
│   │   └── images/
│   │
│   ├── instance/                   # 인스턴스별 데이터
│   │   └── site.db                 # SQLite 데이터베이스
│   │
│   └── socketio_events.py          # SocketIO 이벤트 핸들러
│
├── data/                           # 애플리케이션 데이터
│   ├── logs/                       # 로그 파일
│   ├── uploads/                    # 업로드된 파일
│   ├── temp_ip/                    # 임시 IP 파일
│   ├── temp_zips/                  # 임시 ZIP 파일
│   ├── xml/                        # XML 설정 파일
│   ├── scripts/                    # 스크립트 파일
│   ├── idrac_info/                 # iDRAC 정보 파일
│   ├── mac/                        # MAC 주소 파일
│   ├── guid_file/                  # GUID 파일
│   ├── gpu_serial/                 # GPU 시리얼 파일
│   ├── mac_backup/                 # MAC 백업 파일
│   └── server_list/                # 서버 리스트 파일
│
├── migrations/                     # Alembic 마이그레이션
│   ├── versions/                   # 마이그레이션 버전
│   ├── alembic.ini
│   ├── env.py
│   └── README
│
├── tests/                          # 테스트 코드
│   ├── __init__.py
│   ├── test_auth.py
│   ├── test_api.py
│   └── test_services.py
│
└── venv/                           # 가상환경 (git에서 제외)

💡 사용법

1. 로그인 및 회원가입

  1. 브라우저에서 http://localhost:5000 접속
  2. 회원가입 페이지에서 계정 생성
  3. 관리자 승인 대기 (Telegram 봇 설정 시 자동 알림)
  4. 승인 후 로그인

2. iDRAC 서버 정보 수집

  1. 메인 페이지에서 "IP 처리" 섹션 선택
  2. 스크립트 선택 (예: get_idrac_info.py)
  3. IP 주소 입력 (각 줄에 하나씩)
    192.168.1.100
    192.168.1.101
    192.168.1.102
    
  4. iDRAC 사용자명/비밀번호 입력
  5. "처리" 버튼 클릭
  6. 실시간 진행 상황 확인
  7. 완료 후 결과 파일 다운로드

3. 펌웨어 카탈로그 관리

  1. 관리자 페이지 접속
  2. "펌웨어 관리" 섹션 선택
  3. "Dell 카탈로그 동기화" 버튼 클릭
  4. 카탈로그 다운로드 및 파싱 대기
  5. 펌웨어 목록 확인

4. DRM XML 파일 업로드

  1. Dell Repository Manager에서 XML 카탈로그 생성
  2. 관리자 설정 페이지 접속
  3. "DRM Repository 상태 확인" 클릭
  4. XML 파일 업로드
  5. "DRM 데이터 동기화" 클릭

5. XML 설정 파일 관리

  1. "XML 파일" 메뉴 선택
  2. XML 파일 업로드 또는 기존 파일 선택
  3. "편집" 버튼 클릭하여 웹 에디터에서 수정
  4. 저장 시 자동 백업 생성
  5. SCP 파일 다운로드 또는 서버에 적용

6. MAC/GUID 데이터 수집 및 변환

MAC 주소 수집

  1. "MAC to Excel" 섹션 선택
  2. MAC 주소 데이터 입력 또는 파일 업로드
  3. 서버 리스트 입력 (선택 사항)
  4. "변환" 버튼 클릭
  5. 생성된 Excel 파일 다운로드

GUID 수집

  1. "GUID to Excel" 섹션 선택
  2. GUID 데이터 입력
  3. 서버 리스트 매핑
  4. Excel 파일 생성 및 다운로드

7. 작업 모니터링

  1. "작업 관리" 메뉴 선택
  2. 실행 중인 작업 목록 확인
  3. 작업 상세 정보 보기
  4. 필요시 작업 취소

🔧 고급 기능

Telegram 봇 설정

1. Telegram 봇 생성

  1. Telegram에서 @BotFather 검색
  2. /newbot 명령어 입력
  3. 봇 이름 및 사용자명 설정
  4. 발급받은 토큰을 .env 파일의 TELEGRAM_BOT_TOKEN에 입력

2. Chat ID 확인

  1. @userinfobot 검색
  2. 봇과 대화 시작
  3. 표시되는 ID를 .env 파일의 TELEGRAM_CHAT_ID에 입력

3. 봇 기능 활성화

  • 애플리케이션 재시작 시 자동으로 봇 폴링 시작
  • 사용자 로그인/회원가입 시 Telegram 알림 전송
  • 신규 사용자 승인 요청 시 인라인 버튼으로 승인/거부 가능

데이터베이스 마이그레이션

새로운 마이그레이션 생성

# 모델 변경 후 마이그레이션 파일 생성
flask db migrate -m "Add new column to user table"

# 마이그레이션 적용
flask db upgrade

# 마이그레이션 롤백
flask db downgrade

기존 데이터베이스 업그레이드

# 현재 마이그레이션 상태 확인
flask db current

# 최신 버전으로 업그레이드
flask db upgrade

# 특정 버전으로 업그레이드
flask db upgrade <revision>

비밀번호 해싱 마이그레이션

기존 사용자의 비밀번호를 Argon2로 마이그레이션:

python migrate_passwords.py

사용자 승인 상태 업데이트

기존 사용자를 일괄 승인:

python update_user_approval.py

로그 관리

로그 파일 위치: data/logs/app.log

로그 레벨 설정 (.env 파일):

LOG_LEVEL=INFO  # DEBUG, INFO, WARNING, ERROR, CRITICAL

로그 파일 로테이션:

  • 자동으로 날짜별 로그 파일 생성
  • 최대 30일간 보관

성능 최적화

동시 작업 수 조정

.env 파일에서 MAX_WORKERS 값 조정:

MAX_WORKERS=60  # CPU 코어 수에 따라 조정

SocketIO 모드 변경

Windows:

SOCKETIO_ASYNC_MODE=threading

Linux (eventlet 설치 필요):

SOCKETIO_ASYNC_MODE=eventlet
pip install eventlet

운영 환경 배포

Gunicorn 사용 (Linux)

# Gunicorn 설치
pip install gunicorn eventlet

# 실행
gunicorn --worker-class eventlet -w 1 --bind 0.0.0.0:5000 app:app

Nginx 리버스 프록시 설정

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /socket.io {
        proxy_pass http://127.0.0.1:5000/socket.io;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Systemd 서비스 등록 (Linux)

/etc/systemd/system/idrac-info.service:

[Unit]
Description=iDRAC Info Manager
After=network.target

[Service]
User=www-data
WorkingDirectory=/path/to/idrac_info
Environment="PATH=/path/to/idrac_info/venv/bin"
ExecStart=/path/to/idrac_info/venv/bin/gunicorn --worker-class eventlet -w 1 --bind 127.0.0.1:5000 app:app
Restart=always

[Install]
WantedBy=multi-user.target

서비스 시작:

sudo systemctl daemon-reload
sudo systemctl enable idrac-info
sudo systemctl start idrac-info
sudo systemctl status idrac-info

📚 Git 사용법

변경사항 커밋 및 푸시

# 변경된 파일 확인
git status

# 모든 변경사항 스테이징
git add -A

# 또는 특정 파일만 스테이징
git add backend/routes/main.py

# 커밋 메시지와 함께 커밋
git commit -m "Add new feature: firmware auto-update"

# 원격 저장소에 푸시
git push origin main

원격 저장소에서 최신 버전 가져오기

# 최신 변경사항 가져오기
git pull origin main

# 또는 fetch 후 merge
git fetch origin
git merge origin/main

브랜치 관리

# 새 브랜치 생성
git checkout -b feature/new-feature

# 브랜치 전환
git checkout main

# 브랜치 목록 확인
git branch -a

# 브랜치 병합
git checkout main
git merge feature/new-feature

# 브랜치 삭제
git branch -d feature/new-feature

원격 저장소 확인

# 원격 저장소 목록
git remote -v

# 원격 저장소 추가
git remote add origin https://github.com/username/idrac_info.git

# 원격 저장소 URL 변경
git remote set-url origin https://github.com/username/new-repo.git

변경사항 되돌리기

# 작업 디렉토리 변경사항 취소
git checkout -- filename

# 스테이징 취소
git reset HEAD filename

# 마지막 커밋 취소 (변경사항 유지)
git reset --soft HEAD~1

# 마지막 커밋 취소 (변경사항 삭제)
git reset --hard HEAD~1

🐛 문제 해결

Telegram 봇이 응답하지 않음

증상: Telegram 메시지가 전송되지 않음

해결 방법:

  1. .env 파일에서 TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID 확인
  2. Telegram 설정 확인 스크립트 실행:
    python check_telegram.py
    
  3. 봇 폴링 서비스 로그 확인:
    tail -f data/logs/app.log | grep "텔레그램"
    
  4. 중복 봇 인스턴스 확인 및 종료:
    # Windows
    tasklist | findstr python
    taskkill /F /PID <process_id>
    
    # Linux
    ps aux | grep python
    kill -9 <process_id>
    

SocketIO 연결 실패

증상: 실시간 업데이트가 작동하지 않음

해결 방법:

  1. 브라우저 콘솔에서 에러 확인
  2. SocketIO 모드 변경:
    # Windows
    SOCKETIO_ASYNC_MODE=threading
    
    # Linux
    SOCKETIO_ASYNC_MODE=eventlet
    
  3. 방화벽 설정 확인
  4. CORS 설정 확인 (app.py):
    socketio = SocketIO(app, cors_allowed_origins="*")
    

데이터베이스 마이그레이션 오류

증상: flask db upgrade 실행 시 오류 발생

해결 방법:

  1. 현재 마이그레이션 상태 확인:
    flask db current
    
  2. 마이그레이션 히스토리 확인:
    flask db history
    
  3. 데이터베이스 백업 후 재생성:
    # 백업
    cp backend/instance/site.db backend/instance/site.db.backup
    
    # 재생성
    rm backend/instance/site.db
    flask db upgrade
    

파일 업로드 실패

증상: XML 파일 업로드 시 오류 발생

해결 방법:

  1. 파일 크기 제한 확인 (.env):
    MAX_CONTENT_LENGTH=10485760  # 10MB
    
  2. 디렉토리 권한 확인:
    # Linux
    chmod -R 755 data/
    
  3. 디스크 공간 확인:
    df -h
    

Redfish API 연결 실패

증상: iDRAC 서버 연결 시 타임아웃 또는 인증 오류

해결 방법:

  1. iDRAC IP 주소 및 네트워크 연결 확인
  2. iDRAC 사용자명/비밀번호 확인
  3. SSL 검증 비활성화 (.env):
    REDFISH_VERIFY_SSL=false
    
  4. 타임아웃 시간 증가:
    REDFISH_TIMEOUT=30
    
  5. iDRAC Redfish 서비스 활성화 확인

세션 타임아웃 문제

증상: 로그인 후 자주 로그아웃됨

해결 방법:

  1. 세션 타임아웃 시간 증가 (.env):
    SESSION_MINUTES=60
    
  2. 쿠키 설정 확인 (config.py):
    SESSION_COOKIE_SECURE = False  # HTTP 환경
    REMEMBER_COOKIE_SECURE = False
    
Description
No description provided
Readme 1.5 MiB
Languages
Python 52.2%
Shell 16.2%
HTML 15.5%
JavaScript 9.3%
CSS 6.7%