Shell脚本,用于查找使用KVM / virsh命令创建的虚拟机的IP地址

时间:2015-05-04 14:49:10

标签: linux shell unix kvm virsh

我正在寻找shell脚本来查找使用KVM / VIRSH创建的虚拟机的IP地址。

我使用以下步骤来实现它,但无法找到它。

  1. Ping范围内的IP地址
  2. 2.使用Virsh list命令列出所有活动的VM

    3.使用Virsh dumpxml domainname并投影vml的xml

    1. 使用grep命令并获取vm的硬件地址
    2. 5.显示每个虚拟机的硬件地址

      现在我想添加一个步骤,例如使用¨arp-ne¨

      获取该特定硬件地址的IP地址

      我无法弄清楚如何添加部件。

      任何人都可以帮助我。

      for i in {1..150}
      do
        ping -c 1 -n -q -r  -t 1 -s 1  -W 1   192.168.1.$i > /dev/null &
      done
      
      
       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 "\n" }'
      done
      

      当前输出:

      $ ./virshshell.sh
        vm2 52:54:00:4b:7f:41
        vm3 52:54:00:0e:4c:42
      

      我期待的输出是

       $ ./virshshell.sh
           vm2 52:54:00:4b:7f:41  192.*.*.*
           vm3 52:54:00:0e:4c:42  192.*.*.*
      

1 个答案:

答案 0 :(得分:0)

使用nmap代替ping进行网络发现。它可以执行ping所做的更多功能,而且运行速度更快,并且可以处理您在for循环中执行的网络范围扫描。

$ nmap -T5 -n -PE 192.168.4.0/24 > /dev/null
$ ip neigh show | grep 192.168.4 | grep -v FAILED
192.168.4.92 dev eth0 lladdr 54:52:00:90:90:92 REACHABLE
192.168.4.11 dev eth0 lladdr fa:16:3e:fa:ac:07 REACHABLE
192.168.4.91 dev eth0 lladdr 54:52:00:90:90:91 REACHABLE
192.168.4.90 dev eth0 lladdr 54:52:00:90:90:90 REACHABLE