kvm能不能直接获取某个虚拟机的ip信息

这是我的虚拟机列表

[root@puppetserver kvm_centos]# virsh list --all
Id    Name                           State
----------------------------------------------------
3     docker_01                      running
7     docker_02                      running
8     docker_03                      running
9     docker_04                      running
-     centos6.7_base                 shut off

有没什么办法可以直接得到这几台机器的ip地址,而不是连接进去虚拟机后查看ifconfig才能获得。

阅读 7.7k
2 个回答
#!/bin/bash
#BY MRCO,2015-06-10
#MODIFY 2015-06-10
#ping当前网段内在线的主机,以便产生arp记录.
subnet=`route -n|grep "UG" |awk '{print $2}'|sed 's/..$//g'`
for ip in $subnet.{1..253};do
{
ping -c1 $ip >/dev/null 2>&1
}&
done
#依次查找arp记录.
running_vms=`virsh list |grep running`
echo -ne "共有`echo "$running_vms"|wc -l`个虚拟机在运行.\n"
for i in `echo "$running_vms" | awk '{ print $2 }'`;do
mac=`virsh dumpxml $i |grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`
ip=`arp -ne |grep "$mac" |awk '{printf $1}'`
printf "%-30s %-30s\n" $i $ip
done

然后chmod +x 执行就可以了

最新版本的libvert已经内置命令查看了,不用这么复杂

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进