VM'nin IP adresini KVM'de nasıl bulabilirim (Nmap kullanarak)? Olmazsa, bunu yapmak için Libvirt'te herhangi bir fonksiyon var mı?
VM'nin IP adresini KVM'de nasıl bulabilirim (Nmap kullanarak)? Olmazsa, bunu yapmak için Libvirt'te herhangi bir fonksiyon var mı?
Yanıtlar:
Centos 63 x86_64'te KVM için hızlı ve kirli örnek. VM'lerin bu segmentte sahip olabileceği tüm olası IP adreslerine arka planda kısa ping
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
VM'lerin adlarını ve MAC adreslerini virsh yoluyla çıkarın ve IP'yi ARP tablosundan çıkarın.
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
Ellerimin kirlenmesinin uzun saatler sürmesinden sonra, üzerine tökezlemek üzereydim bu Epik bağlantı
Bunu yapmak için bir bash betiği yazdım ama aynı zamanda içlerinde "swarm" adı verilen makinelere filtre uygulamak için. Filtreyi çıkarabilir veya gerektiği gibi değiştirebilirsiniz. (Kaldır | grep "swarm"
(Bunu tam komut dosyası olarak kullanabilir veya bir liner'i ondan yapıştırabilirsiniz:
#!/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;
Kurucu kısımlar bakir komutlardır, virsh list
Tüm VM'lerin bir listesini ve daha sonra bir for döngüsünü almak için domifaddr <VM NAME>
ip adresini almak için. Geri kalan her şey metni yalnızca satır başına bir IP adresine filtrelemek. Bunu Ubuntu KVM sunucusunda yazdım / çalıştırdım 15.10
İle başladığında qemu-kvm
ve --nographic
seçeneğini kullanabilirsiniz ctrl-a
c
qemu monitörünü edinmek için (VM'leri izlemek ve kontrol etmek için bir tür kabuk)
Komuta info network
MAC adresi de dahil olmak üzere ağ bağlantı bilgilerini verecektir.
Komuta info usernet
köprü bilgisini gösterir: ör. Konuk portunun host portu ile nasıl eşleştirildiği. Bu bilgiler genellikle konuk ipini içerir.
Bazı tcp port yönlendirme ile vm'yi başlatın:
qemu-kvm -cpu host -m 1024 -hda ~/myvm.qcow -net user,hostfwd=tcp::10022-:22 -net nic -nographic
sonra ctrl-a
c
komutlar info network
ve info usernet
vermek
(qemu) info network
hub 0
\ hub0port1: e1000.0: index=0,type=nic,model=e1000,macaddr=58:44:00:22:11:
\ hub0port0: user.0: index=0,type=user,net=10.0.2.0,restrict=off
(qemu) info usernet
VLAN 0 (user.0):
Protocol[State] FD Source Address Port Dest. Address Port RecvQ S
TCP[HOST_FORWARD] 13 * 10022 10.0.2.15 22 0
Referans: QEMU-doc wiki.qemu.org adresinde.
Ben yazdım get-vm-ip
komut dosyası https://github.com/earlruby/create-vm/blob/master/get-vm-ip ) IP almak için bunu kullanan:
HOSTNAME=[your vm name]
MAC=$(virsh domiflist $HOSTNAME | awk '{ print $5 }' | tail -2 | head -1)
arp -a | grep $MAC | awk '{ print $2 }' | sed 's/[()]//g'
Virsh komutu MAC adresini alır, son satır IP adresini kullanarak bulur arp
.