Herramientas
🛠️
Scripts para Proxmox
Scripts útiles para administración y automatización de Proxmox.
Scripts útiles para administración, automatización y monitoreo de Proxmox VE. Ejecútalos en tu host Proxmox o vía SSH.
📋 Listar Todas las VMs y Contenedores con Estado
Vista general rápida de cada VM y CT, incluyendo estado, CPU, memoria y tiempo de actividad.
#!/bin/bash
# pve-status — Show all VMs and CTs with resource usage
echo "ID NAME STATUS CPU% MEM(MB) UPTIME"
echo "-------- -------------------- --------- ----- --------- ----------"
qm list 2>/dev/null | tail -n +2 | while read vm; do
vmid=$(echo $vm | awk '{print $1}')
name=$(echo $vm | awk '{print $2}')
status=$(echo $vm | awk '{print $3}')
if [ "$status" = "running" ]; then
cpu=$(qm agent $vmid get-osinfo 2>/dev/null | grep -c . || echo "N/A")
mem=$(qm status $vmid --verbose 2>/dev/null | grep maxmem | awk '{printf "%.0f", $2/1048576}')
uptime=$(qm status $vmid --verbose 2>/dev/null | grep uptime | awk '{print $2}')
printf "%-8s %-20s %-9s %-5s %-8s %s\n" "$vmid" "${name:0:20}" "$status" "$cpu" "$mem" "${uptime}s"
else
printf "%-8s %-20s %-9s %-5s %-8s %s\n" "$vmid" "${name:0:20}" "$status" "-" "-" "-"
fi
done 💾 Respaldar Todas las VMs a PBS
Ejecuta trabajos de Proxmox Backup Server para todas las VMs en ejecución. Agrega a cron para respaldos diarios.
#!/bin/bash
# pve-backup-all — Backup all VMs with PBS
STORAGE="pbs-local"
MODE="snapshot"
COMPRESS="zstd"
echo "Starting backup of all VMs to $STORAGE..."
for vmid in $(qm list | tail -n +2 | awk '{print $1}'); do
echo " Backing up VM $vmid..."
vzdump $vmid --storage $STORAGE --mode $MODE --compress $COMPRESS --quiet 1
done
echo "Done. Check /var/log/vzdump/ for details." 🔄 Actualizar Todos los Contenedores LXC
Ejecuta apt update && apt upgrade dentro de cada contenedor LXC en ejecución.
#!/bin/bash
# pve-update-containers — Update all running LXCs
for ctid in $(pct list | tail -n +2 | awk '{print $1}'); do
status=$(pct status $ctid | awk '{print $2}')
if [ "$status" = "running" ]; then
echo "Updating CT $ctid..."
pct exec $ctid -- bash -c "apt update && apt upgrade -y && apt autoremove -y"
fi
done
echo "All containers updated." 📊 Resumen de Recursos de Proxmox
Estadísticas de CPU, memoria, almacenamiento y E/S para el host Proxmox.
#!/bin/bash
# pve-resources — Host resource overview
echo "=== CPU ==="
grep -c ^processor /proc/cpuinfo | xargs echo "Cores:"
uptime | awk -F'load average:' '{print "Load:" $2}'
echo -e "\n=== MEMORY ==="
free -h | grep -E '^Mem|^Swap'
echo -e "\n=== STORAGE ==="
df -h / /var/lib/vz 2>/dev/null | grep -v ^Filesystem
echo -e "\n=== ZFS POOLS ==="
zpool list 2>/dev/null || echo "No ZFS pools"
echo -e "\n=== RUNNING VMs/CTs ==="
qm list | grep running | wc -l | xargs echo "VMs running:"
pct list | grep running | wc -l | xargs echo "CTs running:" 🔍 Buscar VM por MAC o IP
Localiza qué VM o contenedor posee una dirección MAC o IP específica.
#!/bin/bash
# pve-find — Find VM/CT by MAC or IP
if [ -z "$1" ]; then
echo "Usage: pve-find <mac|ip>"
exit 1
fi
echo "Searching for '$1'..."
for vmid in $(qm list | tail -n +2 | awk '{print $1}'); do
qm config $vmid 2>/dev/null | grep -qi "$1" && echo " VM $vmid: $(qm config $vmid | grep name | awk '{print $2}')"
done
for ctid in $(pct list | tail -n +2 | awk '{print $1}'); do
pct config $ctid 2>/dev/null | grep -qi "$1" && echo " CT $ctid: $(pct config $ctid | grep hostname | awk '{print $2}')"
done 💡 Instalación
# Save scripts to /usr/local/bin and make executable
sudo cp pve-* /usr/local/bin/
sudo chmod +x /usr/local/bin/pve-*
# Optionally add a cron job for daily backups
echo "0 2 * * * /usr/local/bin/pve-backup-all" | crontab -