Encontre o IP da VM executando KVM

Encontre o IP da VM executando KVM

Como posso encontrar o IP da VM no KVM (usando Nmap)? Caso contrário, existe alguma função no Libvirt para fazer isso?

Responder1

Exemplo rápido e sujo para KVM no Centos 63 x86_64. Ping curto em segundo plano para todos os endereços IP possíveis que as VMs possam ter neste 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

Extraia os nomes e endereços MAC das VMs via virsh e extraia o IP da tabela 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

Responder2

Depois de muitas horas sujando as mãos, por acaso me deparei comesseLigação épica.

  1. Obtenha o endereço MAC da VM no arquivo de configuração da VM (como estou usando o KVM, consultei o arquivo .xml para obter o endereço MAC).
  2. Em seguida, use arp -a e obtenha todos os endereços MAC e o endereço das interfaces e armazene-os em um arquivo
  3. Consulte o arquivo para obter o endereço MAC da VM da etapa 1.

Responder3

Eu escrevi um script bash para fazer isso, mas também para filtrar máquinas com o nome "swarm". Você pode remover o filtro ou trocá-lo conforme necessário. (remover | grep "swarm") Você pode usar isso como o script completo ou copiar e colar o liner dele:

#!/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;

As partes constituintes são comandos virsh, virsh listpara obter uma lista de todas as VMs e, em seguida, em um loop for chamando domifaddr <VM NAME>para obter o endereço IP dela. Todo o resto é filtrar o texto apenas para o endereço IP, um por linha. Eu escrevi/executei isso no servidor Ubuntu KVM 15.10

Responder4

Usando o comando virt-cat, você pode consultar todos os arquivos em uma VM. Por exemplo, o arquivo de concessão dhcp:

virt-cat -d seu_domínio /var/lib/dhcp/dhclient.eth0.leases

informação relacionada