这是一个创建于 3489 天前的主题,其中的信息可能已经有所发展或是发生改变。
背景:自己服务器跑了一些kvm的虚拟机,很多都是当时临时配置的IP,也没有记录;
host只有命令行界面,想通过vnc进去查看显得麻烦,所以想写个shell来获取虚拟机的IP.
我自己的思路是通过扫描局域网的IP,然后通过kvm虚拟机的MAC地址来做匹配.
有没有更加直接高效的办法来实现? 谢谢!
第 1 条附言 · 2015-06-10 21:50:50 +08:00
#!/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
1 条回复 • 2015-06-10 13:57:10 +08:00
|
|
1
LZSB 2015-06-10 13:57:10 +08:00
|