# computer_info **Repository Path**: lucklhq/computer_info ## Basic Information - **Project Name**: computer_info - **Description**: 计算机硬件信息 收集系统是一个专为企业IT资产管理设计的Web应用程序。系统通过客户端程序自动收集计算机硬件信息,并通过Web界面提供数据查看、筛选、导出等功能,帮助IT管理员高效管理企业设备资产。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2025-05-25 - **Last Updated**: 2025-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 硬件信息收集系统 (Hardware Information Collection System) 如果你所在 的公司有 2000 台电脑 需要收集 所有电脑 的信息 以及使用人员 可以 将 exe 程序 分发 公司人员自行 提交即可 一个基于Django开发的企业级硬件信息收集和管理系统,提供自动化硬件信息采集、数据可视化展示、报告导出等功能。 ## 📋 目录 - [项目概述](#项目概述) - [功能特性](#功能特性) - [技术架构](#技术架构) - [系统要求](#系统要求) - [安装部署](#安装部署) - [使用指南](#使用指南) - [API文档](#api文档) - [客户端程序](#客户端程序) - [项目结构](#项目结构) - [配置说明](#配置说明) - [常见问题](#常见问题) - [更新日志](#更新日志) - [许可证](#许可证) ## 🎯 项目概述 硬件信息收集系统是一个专为企业IT资产管理设计的Web应用程序。系统通过客户端程序自动收集计算机硬件信息,并通过Web界面提供数据查看、筛选、导出等功能,帮助IT管理员高效管理企业设备资产。 ### 主要用途 - 企业IT资产管理和盘点 - 硬件配置统计和分析 - 设备维护和升级规划 - 合规性检查和报告生成 ## ✨ 功能特性 ### 🔧 硬件信息收集 - **全面的硬件检测**:CPU、内存、磁盘、网络、GPU等完整硬件信息 - **系统信息采集**:操作系统、BIOS、域信息等系统详情 - **自动化收集**:客户端程序一键收集,无需手动操作 - **兼容性强**:支持Windows 7及以上版本操作系统 ### 📊 数据管理与展示 - **直观的Web界面**:基于Bootstrap的现代化响应式设计 - **多维度筛选**:按部门、姓名、设备类型等条件筛选 - **详细信息展示**:分选项卡展示系统、硬件、磁盘、网络、GPU信息 - **实时搜索**:支持关键词实时搜索功能 ### 📈 数据导出与报告 - **Excel导出**:完整的硬件信息Excel报告 - **CSV导出**:便于数据分析的CSV格式 - **自定义报告**:支持按需生成特定格式报告 ### 🔐 安全与权限 - **用户认证系统**:基于Django内置认证系统 - **权限控制**:不同用户角色的访问权限管理 - **数据安全**:CSRF保护、SQL注入防护等安全措施 ### 🚀 API接口 - **RESTful API**:标准化的API接口设计 - **数据上传接口**:客户端程序数据上传 - **查询接口**:支持程序化数据查询 - **状态监控**:服务器状态实时监控 ## 🏗️ 技术架构 ### 后端技术栈 - **Web框架**:Django 4.2.7 - 稳定可靠的Python Web框架 - **API框架**:Django REST Framework 3.14.0 - 强大的API开发框架 - **数据库**:MySQL - 企业级关系型数据库 - **数据处理**:Pandas 2.1.1 - 高效的数据分析库 - **文档处理**:Openpyxl 3.1.2 - Excel文件处理 - **系统监控**:Psutil 5.9.5 - 系统和进程监控 ### 前端技术栈 - **UI框架**:Bootstrap 5 - 响应式前端框架 - **JavaScript库**:jQuery - DOM操作和AJAX请求 - **图标库**:Font Awesome - 丰富的图标资源 - **模板引擎**:Django Templates - 服务端模板渲染 ### 客户端技术 - **开发语言**:Python 3.8+ - **GUI框架**:Tkinter - 跨平台图形界面 - **硬件检测**:PowerShell + WMI - Windows硬件信息查询 - **网络通信**:Requests - HTTP客户端库 ### 部署技术 - **Web服务器**:Gunicorn + Nginx - **进程管理**:Supervisor - **静态文件**:WhiteNoise - **日志管理**:Django Logging Framework ## 💻 系统要求 ### 服务器端 - **操作系统**:Linux (推荐 Ubuntu 18.04+) 或 Windows Server - **Python版本**:Python 3.8 或更高版本 - **数据库**:MySQL 5.7+ 或 MariaDB 10.3+ - **内存**:最低 2GB RAM (推荐 4GB+) - **存储空间**:最低 10GB 可用空间 ### 客户端 - **操作系统**:Windows 7 SP1 或更高版本 - **权限要求**:管理员权限(用于硬件信息读取) - **网络要求**:能够访问服务器的HTTP/HTTPS端口 ## 🚀 安装部署 ### 1. 环境准备 ```bash # 克隆项目代码 git clone cd Computer_Info # 创建Python虚拟环境 python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate ``` ### 2. 安装依赖 ```bash # 安装Python依赖包 pip install -r requirements.txt # 如果使用MySQL,确保安装MySQL客户端 # Ubuntu/Debian sudo apt-get install python3-dev default-libmysqlclient-dev build-essential # CentOS/RHEL sudo yum install python3-devel mysql-devel gcc ``` ### 3. 数据库配置 ```bash # 创建MySQL数据库 mysql -u root -p CREATE DATABASE hardware_info CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'hardware_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON hardware_info.* TO 'hardware_user'@'localhost'; FLUSH PRIVILEGES; EXIT; ``` ### 4. Django配置 ```bash # 复制本地配置文件 cp local_settings.py.example local_settings.py # 编辑local_settings.py,配置数据库连接 # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.mysql', # 'NAME': 'hardware_info', # 'USER': 'hardware_user', # 'PASSWORD': 'your_password', # 'HOST': 'localhost', # 'PORT': '3306', # } # } ``` ### 5. 数据库初始化 ```bash # 创建数据库迁移文件 python manage.py makemigrations # 执行数据库迁移 python manage.py migrate # 创建超级用户 python manage.py createsuperuser # 收集静态文件 python manage.py collectstatic ``` ### 6. 启动服务 ```bash # 开发环境启动 python manage.py runserver 0.0.0.0:8000 # 生产环境启动(使用Gunicorn) gunicorn --config gunicorn_conf.py Computer_Info.wsgi:application ``` ## 📖 使用指南 ### Web界面操作 #### 1. 登录系统 - 访问 `http://your-server:8000/` - 使用创建的超级用户账号登录 - 登录后进入系统主页 #### 2. 查看硬件报告 - 点击导航栏的"硬件报告"菜单 - 查看所有已收集的硬件信息 - 使用筛选器按部门或关键词筛选 - 点击详情按钮查看完整硬件信息 #### 3. 导出数据 - 在报告列表页面点击"导出Excel"或"导出CSV" - 系统将生成包含所有硬件信息的文件 - 文件将自动下载到本地 #### 4. 管理用户 - 访问 `http://your-server:8000/admin/` - 使用超级用户账号登录Django管理后台 - 管理用户账号和权限 ### 客户端程序使用 #### 1. 下载客户端 - 从 `exe/` 目录下载 `硬件信息收集工具.exe` - 或使用Python源码 `hardware_collector.py` #### 2. 运行收集程序 - 以管理员身份运行客户端程序 - 输入姓名、部门、岗位等信息 - 点击"开始收集"按钮 - 等待收集完成后点击"提交信息" #### 3. 查看收集结果 - 程序界面会显示收集进度和结果 - 收集的信息会自动上传到服务器 - 可在Web界面查看上传的数据 ## 🔌 API文档 ### 认证方式 系统使用Django Session认证,需要先登录获取会话。 ### 主要API端点 #### 1. 上传硬件信息 ```http POST /api/upload/ Content-Type: application/json { "name": "张三", "department": "IT部门", "position": "系统管理员", "responsibility": "服务器维护", "computer_name": "PC-001", "os_name": "Windows 10", "os_version": "21H2", "cpu_name": "Intel Core i7-10700", "memory_total_gb": 16.0, // ... 其他硬件信息 } ``` #### 2. 获取服务器状态 ```http GET /api/status/ Response: { "status": "running", "timestamp": "2024-01-01T12:00:00Z", "version": "1.0.0" } ``` #### 3. 查询硬件报告 ```http GET /api/reports/ GET /api/reports/?department=IT部门 GET /api/reports/?search=张三 Response: { "count": 100, "results": [ { "id": 1, "name": "张三", "department": "IT部门", "timestamp": "2024-01-01T12:00:00Z", // ... 其他字段 } ] } ``` #### 4. 导出数据 ```http GET /hardware_info/export/excel/ GET /hardware_info/export/csv/ ``` ### 错误处理 API使用标准HTTP状态码: - `200 OK` - 请求成功 - `400 Bad Request` - 请求参数错误 - `401 Unauthorized` - 未认证 - `403 Forbidden` - 权限不足 - `404 Not Found` - 资源不存在 - `500 Internal Server Error` - 服务器内部错误 ## 💾 客户端程序 ### 程序特性 - **图形化界面**:基于Tkinter的用户友好界面 - **自动权限提升**:自动请求管理员权限 - **进度显示**:实时显示收集进度和状态 - **错误处理**:完善的错误处理和用户提示 - **兼容性强**:支持Windows 7及以上版本 ### 收集的信息类型 #### 系统信息 - 计算机名称、操作系统版本 - 系统架构、域信息 - BIOS制造商和版本 #### 硬件信息 - **CPU**:型号、制造商、核心数、线程数 - **内存**:总容量、详细规格(制造商、速度、位置) - **磁盘**:物理磁盘(型号、接口、容量)、逻辑磁盘(盘符、使用率) - **网络**:网络适配器、MAC地址、IP地址、网关 - **GPU**:显卡型号、驱动版本、显存容量 ### 客户端配置 客户端程序支持配置服务器地址: ```python # 在hardware_collector.py中修改服务器地址 SERVER_URL = "http://your-server:8000" ``` ### 打包为可执行文件 ```bash # 安装PyInstaller pip install pyinstaller # 打包程序 pyinstaller --onefile --windowed --icon=icon.ico hardware_collector.py ``` ## 📁 项目结构 ``` Computer_Info/ ├── 📁 Computer_Info/ # Django项目主目录 │ ├── 📄 __init__.py # Python包初始化文件 │ ├── 📄 settings.py # Django项目设置 │ ├── 📄 urls.py # 项目URL配置 │ ├── 📄 wsgi.py # WSGI应用入口 │ └── 📄 asgi.py # ASGI应用入口 ├── 📁 hardware_info/ # 硬件信息应用 │ ├── 📁 migrations/ # 数据库迁移文件 │ ├── 📁 static/ # 静态文件目录 │ │ └── 📁 hardware_info/ # 应用静态文件 │ ├── 📁 templates/ # 模板文件目录 │ │ └── 📁 hardware_info/ # 应用模板文件 │ │ ├── 📄 base.html # 基础模板 │ │ ├── 📄 index.html # 首页模板 │ │ ├── 📄 login.html # 登录页模板 │ │ └── 📄 reports.html # 报告列表模板 │ ├── 📄 __init__.py # 应用初始化文件 │ ├── 📄 admin.py # Django管理后台配置 │ ├── 📄 apps.py # 应用配置 │ ├── 📄 forms.py # 表单定义 │ ├── 📄 models.py # 数据模型定义 │ ├── 📄 serializers.py # DRF序列化器 │ ├── 📄 tests.py # 单元测试 │ ├── 📄 urls.py # 应用URL配置 │ └── 📄 views.py # 视图函数 ├── 📁 exe/ # 客户端程序目录 │ ├── 📁 build/ # PyInstaller构建目录 │ ├── 📁 dist/ # 打包输出目录 │ ├── 📁 Reports/ # 本地报告存储目录 │ ├── 📄 hardware_collector.py # 客户端源码(最新版) │ ├── 📄 hardware_collector_win7.py # Win7兼容版本 │ ├── 📄 icon.ico # 程序图标 │ ├── 📄 硬件信息收集工具.exe # 编译后的可执行文件 │ ├── 📄 硬件信息收集工具.spec # PyInstaller配置文件 │ └── 📄 打包.txt # 打包说明文档 ├── 📁 logs/ # 日志文件目录 ├── 📁 Reports/ # 服务器端报告存储目录 ├── 📄 .gitignore # Git忽略文件配置 ├── 📄 .htaccess # Apache配置文件 ├── 📄 gunicorn_conf.py # Gunicorn配置文件 ├── 📄 gunicorn.pid # Gunicorn进程ID文件 ├── 📄 local_settings.py # 本地配置文件 ├── 📄 manage.py # Django管理脚本 ├── 📄 README.md # 项目说明文档 ├── 📄 requirements.txt # Python依赖包列表 └── 📄 uwsgi.ini # uWSGI配置文件 ``` ## ⚙️ 配置说明 ### Django设置 (settings.py) #### 数据库配置 ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'hardware_info', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', }, } } ``` #### 安全设置 ```python # 生产环境必须设置 SECRET_KEY = 'your-secret-key' DEBUG = False ALLOWED_HOSTS = ['your-domain.com', 'your-ip-address'] # CSRF保护 CSRF_TRUSTED_ORIGINS = [ 'https://your-domain.com', ] ``` #### 日志配置 ```python LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}', 'style': '{', }, }, 'handlers': { 'file': { 'level': 'INFO', 'class': 'logging.FileHandler', 'filename': os.path.join(BASE_DIR, 'logs/django.log'), 'formatter': 'verbose', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'INFO', 'propagate': True, }, }, } ``` ### 生产环境配置 #### Gunicorn配置 (gunicorn_conf.py) ```python bind = "0.0.0.0:8000" workers = 4 worker_class = "sync" worker_connections = 1000 max_requests = 1000 max_requests_jitter = 100 timeout = 30 keepalive = 2 ``` #### Nginx配置示例 ```nginx server { listen 80; server_name your-domain.com; location /static/ { alias /path/to/Computer_Info/static/; } location /media/ { alias /path/to/Computer_Info/media/; } location / { proxy_pass http://127.0.0.1:8000; 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; } } ``` ## ❓ 常见问题 ### 安装问题 **Q: 安装mysqlclient时出错** ```bash # 解决方案:安装MySQL开发包 # Ubuntu/Debian sudo apt-get install python3-dev default-libmysqlclient-dev build-essential # CentOS/RHEL sudo yum install python3-devel mysql-devel gcc # 或使用PyMySQL替代 pip install PyMySQL # 在settings.py中添加: import pymysql pymysql.install_as_MySQLdb() ``` **Q: 静态文件无法加载** ```bash # 确保收集静态文件 python manage.py collectstatic # 检查STATIC_ROOT设置 STATIC_ROOT = os.path.join(BASE_DIR, 'static') ``` ### 运行问题 **Q: 客户端无法连接服务器** - 检查服务器地址和端口是否正确 - 确认防火墙设置允许相应端口 - 检查网络连接是否正常 **Q: 客户端收集信息失败** - 确保以管理员权限运行客户端 - 检查PowerShell执行策略设置 - 确认WMI服务正常运行 **Q: 数据库连接失败** - 检查数据库服务是否启动 - 确认数据库用户权限 - 检查网络连接和防火墙设置 ### 性能问题 **Q: 系统响应缓慢** - 增加Gunicorn worker数量 - 优化数据库查询 - 添加数据库索引 - 使用缓存系统 **Q: 内存使用过高** - 调整Gunicorn配置 - 优化Django查询集 - 使用分页显示大量数据 ## 📝 更新日志 ### v1.0.0 (2024-01-01) - ✨ 初始版本发布 - 🎯 基础硬件信息收集功能 - 📊 Web界面数据展示 - 📈 Excel/CSV导出功能 - 🔐 用户认证系统 - 🚀 RESTful API接口 ### 计划功能 - 📱 移动端适配 - 📊 数据统计图表 - 🔔 邮件通知功能 - 🔄 自动定时收集 - 🌐 多语言支持 - 📦 Docker容器化部署 ## 🤝 贡献指南 欢迎提交Issue和Pull Request来改进项目! ### 开发环境设置 1. Fork项目到你的GitHub账号 2. 克隆你的Fork到本地 3. 创建新的功能分支 4. 进行开发和测试 5. 提交Pull Request ### 代码规范 - 遵循PEP 8 Python代码规范 - 添加适当的注释和文档字符串 - 编写单元测试覆盖新功能 - 确保代码通过所有测试 ## 📄 许可证 本项目采用 [MIT License](LICENSE) 开源协议。 ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 📧 邮箱:2805619@qq.com - 🐛 问题反馈:[GitHub Issues](https://gitee.com/lucklhq/computer_info/issues) - 📖 文档:[项目Wiki](https://gitee.com/lucklhq/computer_info/wiki) --- **感谢使用硬件信息收集系统!** 🎉