2026-03-30 15:41:08 +08:00
|
|
|
|
# Proxmox VM 任务控制器
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
一个Python脚本,用于自动化控制Proxmox虚拟机执行任务。小主机平时待机监听,接受命令后启动VM执行任务,完成后关闭VM。
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
## 功能特点
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
- **待机监听**:持续监控命令目录,平时保持低功耗状态
|
|
|
|
|
|
- **自动启停**:按需启动/关闭Proxmox虚拟机
|
|
|
|
|
|
- **任务执行**:通过SSH在VM内执行命令
|
|
|
|
|
|
- **状态汇报**:实时记录任务执行状态和结果
|
|
|
|
|
|
- **错误处理**:完善的错误处理和超时机制
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
### 环境要求
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
- Python 3.8+
|
|
|
|
|
|
- Proxmox VE 6.x+
|
|
|
|
|
|
- SSH访问权限
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
### 安装配置
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
1. 克隆仓库
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```bash
|
2026-03-30 15:41:08 +08:00
|
|
|
|
git clone http://124.223.26.33:3000/xiaji/proxmox-task.git
|
|
|
|
|
|
cd proxmox-task
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
2. 设置环境变量
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```bash
|
2026-03-30 15:41:08 +08:00
|
|
|
|
export PROXMOX_HOST="your-proxmox-host"
|
|
|
|
|
|
export PROXMOX_USER="root@pam"
|
|
|
|
|
|
export PROXMOX_TOKEN="your-api-token"
|
|
|
|
|
|
export VM_ID="100"
|
|
|
|
|
|
export SSH_USER="ubuntu"
|
|
|
|
|
|
export SSH_KEY_PATH="/path/to/ssh/key"
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
3. 运行脚本
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```bash
|
2026-03-30 15:41:08 +08:00
|
|
|
|
python3 proxmox_task_controller.py
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
### 使用示例
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
1. 创建任务命令文件 `/var/task-commands/task-001.json`:
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```json
|
|
|
|
|
|
{
|
2026-03-30 15:41:08 +08:00
|
|
|
|
"task_id": "task-001",
|
|
|
|
|
|
"command": "cd /opt/myapp && python3 run_task.py"
|
2026-03-30 14:17:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
2. 查看状态文件 `/var/task-status/task-001.json`:
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"task_id": "task-001",
|
|
|
|
|
|
"status": "success",
|
|
|
|
|
|
"message": "任务执行成功",
|
|
|
|
|
|
"output": "Task completed successfully...",
|
|
|
|
|
|
"timestamp": 1234567890
|
|
|
|
|
|
}
|
2026-03-30 14:17:50 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
## 配置选项
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
| 变量名 | 说明 | 默认值 |
|
|
|
|
|
|
|--------|------|--------|
|
|
|
|
|
|
| PROXMOX_HOST | Proxmox主机地址 | localhost |
|
|
|
|
|
|
| PROXMOX_USER | API用户 | root@pam |
|
|
|
|
|
|
| PROXMOX_TOKEN | API Token | (必需) |
|
|
|
|
|
|
| VM_ID | 虚拟机ID | 100 |
|
|
|
|
|
|
| SSH_USER | SSH用户名 | ubuntu |
|
|
|
|
|
|
| SSH_KEY_PATH | SSH私钥路径 | ~/.ssh/id_rsa |
|
|
|
|
|
|
| COMMAND_DIR | 命令目录 | /var/task-commands |
|
|
|
|
|
|
| STATUS_DIR | 状态目录 | /var/task-status |
|
|
|
|
|
|
| CHECK_INTERVAL | 检查间隔(秒) | 10 |
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
|
|
|
|
|
## 安全建议
|
|
|
|
|
|
|
2026-03-30 15:41:08 +08:00
|
|
|
|
- 使用Proxmox API Token而非密码
|
|
|
|
|
|
- 限制API Token权限
|
|
|
|
|
|
- 使用SSH密钥认证
|
|
|
|
|
|
- 在受信任网络中运行
|
2026-03-30 14:17:50 +08:00
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
MIT License
|