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 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
주요 컴포넌트
-
Routes (라우트)
- 사용자 요청을 받아 적절한 서비스로 전달
- 인증, 권한 검사, 입력 검증 수행
-
Services (서비스)
- 비즈니스 로직 구현
- 외부 API 통신 (Redfish, Telegram)
- 파일 처리 및 데이터 변환
-
Models (모델)
- 데이터베이스 스키마 정의
- ORM을 통한 데이터 접근
-
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. 로그인 및 회원가입
- 브라우저에서
http://localhost:5000접속 - 회원가입 페이지에서 계정 생성
- 관리자 승인 대기 (Telegram 봇 설정 시 자동 알림)
- 승인 후 로그인
2. iDRAC 서버 정보 수집
- 메인 페이지에서 "IP 처리" 섹션 선택
- 스크립트 선택 (예:
get_idrac_info.py) - IP 주소 입력 (각 줄에 하나씩)
192.168.1.100 192.168.1.101 192.168.1.102 - iDRAC 사용자명/비밀번호 입력
- "처리" 버튼 클릭
- 실시간 진행 상황 확인
- 완료 후 결과 파일 다운로드
3. 펌웨어 카탈로그 관리
- 관리자 페이지 접속
- "펌웨어 관리" 섹션 선택
- "Dell 카탈로그 동기화" 버튼 클릭
- 카탈로그 다운로드 및 파싱 대기
- 펌웨어 목록 확인
4. DRM XML 파일 업로드
- Dell Repository Manager에서 XML 카탈로그 생성
- 관리자 설정 페이지 접속
- "DRM Repository 상태 확인" 클릭
- XML 파일 업로드
- "DRM 데이터 동기화" 클릭
5. XML 설정 파일 관리
- "XML 파일" 메뉴 선택
- XML 파일 업로드 또는 기존 파일 선택
- "편집" 버튼 클릭하여 웹 에디터에서 수정
- 저장 시 자동 백업 생성
- SCP 파일 다운로드 또는 서버에 적용
6. MAC/GUID 데이터 수집 및 변환
MAC 주소 수집
- "MAC to Excel" 섹션 선택
- MAC 주소 데이터 입력 또는 파일 업로드
- 서버 리스트 입력 (선택 사항)
- "변환" 버튼 클릭
- 생성된 Excel 파일 다운로드
GUID 수집
- "GUID to Excel" 섹션 선택
- GUID 데이터 입력
- 서버 리스트 매핑
- Excel 파일 생성 및 다운로드
7. 작업 모니터링
- "작업 관리" 메뉴 선택
- 실행 중인 작업 목록 확인
- 작업 상세 정보 보기
- 필요시 작업 취소
🔧 고급 기능
Telegram 봇 설정
1. Telegram 봇 생성
- Telegram에서 @BotFather 검색
/newbot명령어 입력- 봇 이름 및 사용자명 설정
- 발급받은 토큰을
.env파일의TELEGRAM_BOT_TOKEN에 입력
2. Chat ID 확인
- @userinfobot 검색
- 봇과 대화 시작
- 표시되는 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 메시지가 전송되지 않음
해결 방법:
.env파일에서TELEGRAM_BOT_TOKEN과TELEGRAM_CHAT_ID확인- Telegram 설정 확인 스크립트 실행:
python check_telegram.py - 봇 폴링 서비스 로그 확인:
tail -f data/logs/app.log | grep "텔레그램" - 중복 봇 인스턴스 확인 및 종료:
# Windows tasklist | findstr python taskkill /F /PID <process_id> # Linux ps aux | grep python kill -9 <process_id>
SocketIO 연결 실패
증상: 실시간 업데이트가 작동하지 않음
해결 방법:
- 브라우저 콘솔에서 에러 확인
- SocketIO 모드 변경:
# Windows SOCKETIO_ASYNC_MODE=threading # Linux SOCKETIO_ASYNC_MODE=eventlet - 방화벽 설정 확인
- CORS 설정 확인 (app.py):
socketio = SocketIO(app, cors_allowed_origins="*")
데이터베이스 마이그레이션 오류
증상: flask db upgrade 실행 시 오류 발생
해결 방법:
- 현재 마이그레이션 상태 확인:
flask db current - 마이그레이션 히스토리 확인:
flask db history - 데이터베이스 백업 후 재생성:
# 백업 cp backend/instance/site.db backend/instance/site.db.backup # 재생성 rm backend/instance/site.db flask db upgrade
파일 업로드 실패
증상: XML 파일 업로드 시 오류 발생
해결 방법:
- 파일 크기 제한 확인 (
.env):MAX_CONTENT_LENGTH=10485760 # 10MB - 디렉토리 권한 확인:
# Linux chmod -R 755 data/ - 디스크 공간 확인:
df -h
Redfish API 연결 실패
증상: iDRAC 서버 연결 시 타임아웃 또는 인증 오류
해결 방법:
- iDRAC IP 주소 및 네트워크 연결 확인
- iDRAC 사용자명/비밀번호 확인
- SSL 검증 비활성화 (
.env):REDFISH_VERIFY_SSL=false - 타임아웃 시간 증가:
REDFISH_TIMEOUT=30 - iDRAC Redfish 서비스 활성화 확인
세션 타임아웃 문제
증상: 로그인 후 자주 로그아웃됨
해결 방법:
- 세션 타임아웃 시간 증가 (
.env):SESSION_MINUTES=60 - 쿠키 설정 확인 (
config.py):SESSION_COOKIE_SECURE = False # HTTP 환경 REMEMBER_COOKIE_SECURE = False
Description
Languages
Python
52.2%
Shell
16.2%
HTML
15.5%
JavaScript
9.3%
CSS
6.7%