Wie kann ich die IP der VM auf KVM finden (mit Nmap)? Wenn nicht, gibt es in Libvirt Funktionen, die das tun?
Antwort1
Schnelles und einfaches Beispiel für KVM auf Centos 63 x86_64. Kurzer Ping im Hintergrund an alle möglichen IP-Adressen, die die VMs in diesem Segment haben könnten
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
Extrahieren Sie die Namen und MAC-Adressen der VMs über virsh und extrahieren Sie die IP aus der ARP-Tabelle
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
Antwort2
Nachdem ich mir stundenlang die Hände schmutzig gemacht hatte, stieß ich zufällig aufDasEpische Verbindung.
- Holen Sie sich die MAC-Adresse der VM aus der Konfigurationsdatei der VM (da ich KVM verwende, habe ich die XML-Datei nach der MAC-Adresse abgefragt).
- Verwenden Sie dann arp -a und holen Sie sich alle MAC-Adressen und die Adresse der Schnittstellen und speichern Sie sie in einer Datei
- Fragen Sie die Datei nach der MAC-Adresse der VM aus Schritt 1 ab.
Antwort3
Ich habe ein Bash-Skript geschrieben, um dies zu tun, aber auch um nach Maschinen zu filtern, die den Namen „Swarm“ enthalten. Sie können den Filter nach Bedarf entfernen oder ändern. (entfernen | grep "swarm"
) Sie können dies als vollständiges Skript verwenden oder die Einzeiler daraus kopieren und einfügen:
#!/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;
Die Bestandteile sind Virsh-Befehle, virsh list
um eine Liste aller VMs zu erhalten, und dann in einer For-Schleife, domifaddr <VM NAME>
um die IP-Adresse zu erhalten. Der Rest besteht darin, den Text herauszufiltern, sodass nur eine IP-Adresse pro Zeile enthalten ist. Ich habe dies auf dem Ubuntu KVM-Server 15.10 geschrieben/ausgeführt.
Antwort4
Mit dem Befehl virt-cat können Sie alle Dateien auf einer VM abfragen. Beispielsweise die DHCP-Lease-Datei:
virt-cat -d Ihre_Domäne /var/lib/dhcp/dhclient.eth0.leases