# iDRAC Info Manager

Flask 기반 iDRAC 서버 관리 및 자동화 도구

## 📋 목차

- [소개](#소개)
- [주요 기능](#주요-기능)
- [기술 스택](#기술-스택)
- [시작하기](#시작하기)
- [프로젝트 구조](#프로젝트-구조)
- [사용법](#사용법)
- [라이선스](#라이선스)

## 📖 소개

iDRAC Info Manager는 Dell iDRAC 서버 관리를 자동화하고 효율적으로 처리하기 위한 웹 기반 도구입니다. IP 주소 처리, 스크립트 실행, 파일 관리 등 서버 관리에 필요한 다양한 기능을 제공합니다.

## ✨ 주요 기능

### IP 처리 및 스크립트 실행
- 다중 IP 주소에 대한 일괄 스크립트 실행
- 실시간 처리 상태 모니터링 (SocketIO)
- 처리 결과 자동 저장 및 관리

### 파일 관리
- 업로드된 파일 자동 백업
- 실시간 파일 모니터링 (Watchdog)
- 파일 내용 미리보기 및 다운로드
- 안전한 파일 삭제 기능

### 데이터 변환 도구
- **MAC to Excel**: MAC 주소 목록을 Excel 파일로 변환
- **GUID to Excel**: GUID 데이터를 Excel 파일로 변환
- 서버 리스트 관리 (덮어쓰기 옵션 지원)

### 사용자 관리
- Flask-Login 기반 인증 시스템
- 사용자별 권한 관리

### 알림 기능
- Telegram Bot 연동 (선택 사항)
- 처리 완료 알림

## 🛠 기술 스택

### Backend
- **Framework**: Flask 3.0.0
- **Database**: SQLAlchemy (Flask-SQLAlchemy 3.1.1)
- **Authentication**: Flask-Login 0.6.3
- **Migration**: Flask-Migrate 4.0.5
- **Real-time**: Flask-SocketIO 5.3.5

### Libraries & Tools
- **Watchdog**: 파일 시스템 모니터링
- **Telegram Bot**: 알림 전송
- **Chardet**: 문자 인코딩 감지
- **Natsort**: 자연스러운 정렬

### Frontend
- Bootstrap 5
- Bootstrap Icons
- JavaScript (SocketIO Client)

## 🚀 시작하기

### 필수 요구사항

- Python 3.8 이상
- pip (Python 패키지 관리자)

### 설치 방법

#### Windows

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

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

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

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

# 5. 환경 변수 설정 (.env 파일 생성)
# .env.example을 참고하여 설정
```

#### Linux

```bash
# 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. 데이터베이스 초기화
flask db upgrade

# 5. 환경 변수 설정 (.env 파일 생성)
# .env.example을 참고하여 설정
```

### 환경 설정

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

```env
# Flask 설정
SECRET_KEY=your-secret-key-here
FLASK_ENV=development

# 데이터베이스
DATABASE_URL=sqlite:///app.db

# Telegram Bot (선택 사항)
TELEGRAM_BOT_TOKEN=your-bot-token
TELEGRAM_CHAT_ID=your-chat-id

# 폴더 경로
UPLOAD_FOLDER=uploads
BACKUP_FOLDER=backup
XML_FOLDER=xml_files
SCRIPT_FOLDER=scripts
LOG_FOLDER=logs
IDRAC_INFO_FOLDER=idrac_info
```

### 실행 방법

```bash
# 개발 서버 실행
python app.py

# 또는
flask run
```

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

## 📁 프로젝트 구조

```
idrac_info/
├── app.py                      # 메인 애플리케이션
├── config.py                   # 설정 파일
├── requirements.txt            # Python 의존성
├── backend/
│   ├── models/                 # 데이터베이스 모델
│   │   └── user.py
│   ├── routes/                 # 라우트 핸들러
│   │   ├── main.py
│   │   └── auth.py
│   ├── services/               # 비즈니스 로직
│   │   ├── logger.py
│   │   ├── watchdog_handler.py
│   │   └── platform_utils.py
│   ├── templates/              # HTML 템플릿
│   │   ├── base.html
│   │   └── index.html
│   └── static/                 # 정적 파일
│       ├── css/
│       └── js/
├── uploads/                    # 업로드 파일
├── backup/                     # 백업 파일
├── scripts/                    # 실행 스크립트
├── logs/                       # 로그 파일
└── migrations/                 # 데이터베이스 마이그레이션
```

## 💡 사용법

### 1. IP 처리

1. 메인 페이지에서 스크립트 선택
2. IP 주소 입력 (각 줄에 하나씩)
3. "처리" 버튼 클릭
4. 실시간 진행 상황 확인
5. 완료 후 결과 파일 다운로드

### 2. MAC/GUID 변환

1. 해당 섹션에서 데이터 입력
2. 필요시 서버 리스트 입력
3. 변환 버튼 클릭
4. 생성된 Excel 파일 다운로드

### 3. 파일 관리

1. 처리된 파일 목록에서 파일 확인
2. "보기" 버튼으로 내용 미리보기
3. 다운로드 또는 삭제 가능
4. 자동 백업 기능으로 안전하게 관리

## 🔧 주요 기능 상세

### 크로스 플랫폼 지원

- Windows와 Linux 모두 지원
- OS별 최적화된 SocketIO 모드 자동 선택
  - Windows: Threading 모드
  - Linux: Eventlet 모드

### 실시간 모니터링

- SocketIO를 통한 실시간 진행 상황 업데이트
- Watchdog를 통한 파일 변경 감지
- 자동 화면 갱신

### 보안

- Flask-Login 기반 사용자 인증
- CSRF 토큰 보호
- 안전한 파일 업로드 및 처리

### git 신규 업데이트 방법

# 변경사항 올리기
- git add -A
- git commit -m "update"
- git push

# 원격 최신 버전 받기
- git pull

# 현재 원격 확인
- git remote -v

## 📧 연락처

프로젝트 관련 문의사항이 있으시면 이슈를 등록해주세요.