Cómo encontrar una VM o contenedor por dirección MAC en Proxmox VE

Este artículo explica cómo localizar una máquina virtual o contenedor en un cluster de Proxmox VE utilizando su dirección MAC.

Requisitos previos

  • Acceso SSH al nodo de Proxmox con privilegios de root

Método rápido

La dirección MAC está almacenada en los archivos de configuración de Proxmox. Puedes buscar directamente con grep:

grep -ri "00:50:56:a1:b2:c3" /etc/pve/nodes/

Reemplaza 00:50:56:a1:b2:c3 con la dirección MAC que deseas buscar.

Ejemplo de salida

/etc/pve/nodes/pve1/qemu-server/105.conf:net0: virtio=00:50:56:a1:b2:c3,bridge=vmbr0,firewall=1

La ruta indica el nodo (pve1), el tipo (qemu-server o lxc) y el VMID (105).

Script con salida formateada

Para una salida más legible que incluya el nombre de la VM o contenedor:

#!/bin/bash
TARGET_MAC="00:50:56:a1:b2:c3"

# Buscar en VMs QEMU
for conf in /etc/pve/nodes/*/qemu-server/*.conf; do
  if grep -qi "$TARGET_MAC" "$conf" 2>/dev/null; then
    vmid=$(basename "$conf" .conf)
    node=$(echo "$conf" | cut -d'/' -f5)
    name=$(grep -oP '^name:\s*\K.*' "$conf")
    echo "Found: VMID $vmid ($name) on node $node [QEMU]"
  fi
done

# Buscar en contenedores LXC
for conf in /etc/pve/nodes/*/lxc/*.conf; do
  if grep -qi "$TARGET_MAC" "$conf" 2>/dev/null; then
    vmid=$(basename "$conf" .conf)
    node=$(echo "$conf" | cut -d'/' -f5)
    name=$(grep -oP '^hostname:\s*\K.*' "$conf")
    echo "Found: VMID $vmid ($name) on node $node [LXC]"
  fi
done

Reemplaza 00:50:56:a1:b2:c3 con la dirección MAC que deseas buscar.

Ejemplo de salida

Found: VMID 105 (web-server) on node pve1 [QEMU]

Notas

  • La búsqueda es insensible a mayúsculas/minúsculas gracias al flag -i de grep.
  • Este método no requiere que la VM esté encendida ni que tenga el Guest Agent instalado.
  • El directorio /etc/pve/ es un sistema de archivos compartido en el cluster, por lo que puedes ejecutar el comando desde cualquier nodo y encontrar VMs en todos los nodos.