V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mrco
V2EX  ›  问与答

如何获取 kvm 中虚拟机的 ip?

  •  
  •   mrco · 2015-06-10 13:54:45 +08:00 · 5567 次点击
    这是一个创建于 3432 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:自己服务器跑了一些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
    LZSB
        1
    LZSB  
       2015-06-10 13:57:10 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   997 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:33 · PVG 04:33 · LAX 13:33 · JFK 16:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.