Encuentre la IP de la VM que ejecuta KVM

Encuentre la IP de la VM que ejecuta KVM

¿Cómo puedo encontrar la IP de la VM en KVM (usando Nmap)? Si no, ¿hay alguna función en Libvirt para hacer eso?

Respuesta1

Ejemplo rápido y sucio para KVM en Centos 63 x86_64. Ping corto en segundo plano a todas las posibles direcciones IP que puedan tener las VM en este segmento

for i in {1..249}
 do
  ping -c 1 -n -q -r  -t 1 -s 1  -W 1   192.168.100.$i > /dev/null &
done

Extraiga los nombres y direcciones MAC de las máquinas virtuales a través de virsh y extraiga la IP de la tabla ARP

for name in `virsh list | grep running | awk '{ print $2 }'`
do
  printf  "\n$name\n "
  arp -e | grep "`virsh dumpxml  $name | grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`" | 
  awk '{ printf  $1 ;  printf  " "  ; printf  $3 }'
done

Respuesta2

Después de largas horas de ensuciarme las manos, me topé conesteEnlace épico.

  1. Obtenga la dirección MAC de la VM del archivo de configuración de la VM (como estoy usando KVM, consulté el archivo .xml para obtener la dirección MAC).
  2. Luego use arp -a y obtenga todas las direcciones MAC y la dirección de las interfaces y guárdelas en un archivo.
  3. Consulte el archivo para obtener la dirección MAC de la VM desde el paso 1.

Respuesta3

Escribí un script bash para hacer esto pero también para filtrar máquinas con el nombre "enjambre". Puede quitar el filtro o cambiarlo según sea necesario. (eliminar | grep "swarm") Puede usar esto como el script completo o copiar y pegar una sola línea:

#!/usr/bin/env bash
# we make assumption that the VM's we want have the word swarm in their name.  Edit for different name or to get all unfiltered names
for i in $(virsh list | grep "swarm" | awk '{print $2;}' ); do virsh domifaddr $i | sed 3q | sed '$!d' |awk '{print $4}'  ; done;

Las partes constituyentes son comandos virsh, virsh listpara obtener una lista de todas las VM, y luego en un bucle for llamar domifaddr <VM NAME>para obtener la dirección IP de la misma. Todo lo demás es filtrar el texto solo a la dirección IP, una por línea. Escribí/ejecuté esto en el servidor Ubuntu KVM 15.10

Respuesta4

Con el comando virt-cat, puede consultar todos los archivos en una VM. Por ejemplo, el archivo de arrendamiento dhcp:

virt-cat -d su_dominio /var/lib/dhcp/dhclient.eth0.leases

información relacionada