Proxmox VE Management
Configuration
Set environment variables or store in ~/.proxmox-credentials:
CODEBLOCK0
Create API token in Proxmox: Datacenter → Permissions → API Tokens → Add
CLI Usage
CODEBLOCK1
Common Operations
Cluster & Nodes
CODEBLOCK2
List VMs & Containers
CODEBLOCK3
VM/Container Control
CODEBLOCK4
Snapshots
CODEBLOCK5
Tasks & Logs
CODEBLOCK6
Storage
CODEBLOCK7
Backups
CODEBLOCK8
Helper Script
Use scripts/pve.sh for common operations:
CODEBLOCK9
Notes
- - Replace
{node}, {vmid}, {storage}, {snapname} with actual values - API tokens don't need CSRF tokens for POST/PUT/DELETE
- Use
-k to skip SSL verification for self-signed certs - Task operations return UPID for tracking async jobs
Proxmox VE 管理
配置
设置环境变量或存储在 ~/.proxmox-credentials 文件中:
bash
选项1:API 令牌(推荐)
export PROXMOX_HOST=https://192.168.1.100:8006
export PROXMOX
TOKENID=user@pam!tokenname
export PROXMOX
TOKENSECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
选项2:凭据文件
cat > ~/.proxmox-credentials << EOF
PROXMOX_HOST=https://192.168.1.100:8006
PROXMOX
TOKENID=user@pam!monitoring
PROXMOX
TOKENSECRET=your-token-secret
EOF
chmod 600 ~/.proxmox-credentials
在 Proxmox 中创建 API 令牌:数据中心 → 权限 → API 令牌 → 添加
CLI 使用
bash
加载凭据
source ~/.proxmox-credentials 2>/dev/null
API 令牌的认证头
AUTH=Authorization: PVEAPIToken=$PROXMOX
TOKENID=$PROXMOX
TOKENSECRET
常用操作
集群与节点
bash
集群状态
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/cluster/status | jq
列出节点
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes | jq .data[] | {node, status, cpu, mem: (.mem/.maxmem*100|round)}
节点状态
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/status | jq
列出虚拟机与容器
bash
节点上的所有虚拟机
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu | jq .data[] | {vmid, name, status, mem: .mem, cpu: (.cpu*100|round)}
节点上的所有 LXC 容器
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/lxc | jq .data[] | {vmid, name, status}
集群范围的资源
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/cluster/resources?type=vm | jq .data[] | {node, vmid, name, type, status}
虚拟机/容器控制
bash
启动虚拟机
curl -ks -X POST -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/status/start
停止虚拟机
curl -ks -X POST -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/status/stop
关闭虚拟机(优雅关机)
curl -ks -X POST -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/status/shutdown
重启虚拟机
curl -ks -X POST -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/status/reboot
LXC 容器同理:将 /qemu/ 替换为 /lxc/
快照
bash
列出快照
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/snapshot | jq
创建快照
curl -ks -X POST -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/snapshot \
-d snapname=snap1 -d description=更新前
回滚
curl -ks -X POST -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/snapshot/{snapname}/rollback
删除快照
curl -ks -X DELETE -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/qemu/{vmid}/snapshot/{snapname}
任务与日志
bash
最近的任务
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/tasks | jq .data[:10] | .[] | {upid, type, status, user}
任务日志
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/tasks/{upid}/log | jq -r .data[].t
存储
bash
列出存储
curl -ks -H $AUTH $PROXMOX
HOST/api2/json/nodes/{node}/storage | jq .data[] | {storage, type, active, usedfraction: (.used/.total*100|round|tostring + %)}
存储内容
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/storage/{storage}/content | jq
备份
bash
列出备份
curl -ks -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/storage/{storage}/content?content=backup | jq
开始备份
curl -ks -X POST -H $AUTH $PROXMOX_HOST/api2/json/nodes/{node}/vzdump \
-d vmid={vmid} -d storage={storage} -d mode=snapshot
辅助脚本
使用 scripts/pve.sh 进行常用操作:
bash
./scripts/pve.sh status # 集群概览
./scripts/pve.sh vms # 列出所有虚拟机
./scripts/pve.sh start {vmid} # 启动虚拟机
./scripts/pve.sh stop {vmid} # 停止虚拟机
注意事项
- - 将 {node}、{vmid}、{storage}、{snapname} 替换为实际值
- API 令牌在 POST/PUT/DELETE 操作中不需要 CSRF 令牌
- 对于自签名证书,使用 -k 跳过 SSL 验证
- 任务操作返回 UPID 用于跟踪异步任务