Files
proxmox-task/README.md

105 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Proxmox 虚拟机任务控制器
一个Python脚本系统用于自动化控制Proxmox虚拟机执行任务。小主机平时待机监听接收命令后启动VM执行任务完成后自动关闭VM。
## 功能特性
- 📡 **命令监听**监控指定目录的JSON命令文件
- 🖥️ **VM管理**通过Proxmox API启动/关闭虚拟机
- 🔧 **任务执行**通过SSH在VM内执行自定义命令
- 📊 **状态汇报**:实时汇报任务执行状态
- 🔒 **安全认证**支持API Token和SSH密钥认证
- 📝 **日志记录**:完整的操作日志和错误追踪
## 快速开始
### 1. 安装依赖
```bash
pip install requests paramiko python-dotenv
```
### 2. 配置环境
复制环境模板并填写配置:
```bash
cp .env.template .env
# 编辑 .env 文件填写Proxmox和VM信息
```
配置说明:
- `PROXMOX_HOST`: Proxmox服务器地址
- `PROXMOX_API_TOKEN`: Proxmox API Token
- `VM_ID`: 目标虚拟机ID
- `VM_SSH_*`: 虚拟机SSH连接信息
- `COMMAND_DIR`: 命令监听目录
### 3. 运行脚本
```bash
python3 proxmox_task_controller.py
```
### 4. 作为系统服务(推荐)
```bash
# 复制文件到系统目录
sudo cp proxmox_task_controller.py /opt/proxmox-task/
sudo cp .env /opt/proxmox-task/
sudo cp proxmox-task.service /etc/systemd/system/
# 启用并启动服务
sudo systemctl enable proxmox-task
sudo systemctl start proxmox-task
```
## 使用示例
### 创建任务命令
`COMMAND_DIR` 目录(默认 `/var/task-commands`创建JSON文件
```json
{
"task_id": "backup-2024-01-15",
"command": "cd /opt/backup && ./run_backup.sh"
}
```
文件名建议使用唯一标识,如 `task-backup-2024-01-15.json`
### 查看日志
```bash
# 实时日志
tail -f /var/log/proxmox_task_controller.log
# 系统服务日志
journalctl -u proxmox-task -f
```
## 系统要求
- Python 3.8+
- Proxmox VE 6.0+
- 网络访问权限
- SSH密钥认证配置
## 安全建议
- 使用API Token而非密码
- 限制Proxmox API访问IP
- 使用专用SSH密钥
- 定期更新依赖库
## 故障排查
1. **Proxmox连接失败**检查API Token和主机地址
2. **SSH连接失败**验证密钥路径和VM SSH配置
3. **命令执行超时**:调整命令超时时间
4. **VM启动慢**:增加等待就绪时间
## 许可证
MIT License