virsh # net-dhcp-leases nat --help
NAME
net-dhcp-leases - print lease info for a given network
SYNOPSIS
net-dhcp-leases <network> [<mac>]
DESCRIPTION
Print lease info for a given network
OPTIONS
[--network] <string> network name or uuid
[--mac] <string> MAC address
或者在Python中:
import libvirt
conn = libvirt.open('qemu+ssh://root@localhost/system')
for lease in conn.networkLookupByName("my_network").DHCPLeases():
print(lease)
1
这适用于运行CentOS 7 guest的Ubuntu 16.04主机 .
$ virsh list
Id Name State
----------------------------------------------------
5 centos7.0 running
$ virsh domifaddr centos7.0
Name MAC address Protocol Address
-------------------------------------------------------------------------------
vnet0 52:54:00:a1:28:e5 ipv4 192.168.122.15/24
5 回答
我在每个VM上安装avahi,因此他们将宣传自己的地址 . 但是,这不是唯一可用的选项(特别是如果您的VM包含与Linux不同的内容) . 所以进入virsh选项的神奇世界!
*)首先,您需要获取VM的NIC的MAC地址:
*)现在让我们来看看ARP表
*)现在让我们将所有东西粘合在一起(并添加一些shell / regex魔法):
您只需阅读租约文件:
或者,更好的是,使用
virsh
中的net-dhcp-leases
命令:或者在Python中:
这适用于运行CentOS 7 guest的Ubuntu 16.04主机 .
一般来说,有两种选择:
将guest虚拟机管理程序的guest虚拟机代理安装到guest虚拟机操作系统中,并使用特定于虚拟机管理程序的API查询来宾计算机上的IP
依赖于本地网络上的可用信息 - 我正在使用arp-scan
more specific info for VirtualBox or libvirt+QEMU
在我的案例中,没有任何建议有效 . 这是我如何获得访客IP .
获取网络名称:
然后: