2

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

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

  1. ping 范围内的 IP 地址

2.使用Virsh list 命令列出所有活动的VM

3.使用Virsh dumpxml域名并投影vm的xml

  1. 使用 grep 命令并获取 vm 的硬件地址

5.显示每个vm的硬件地址

现在我想再添加一个步骤,例如使用“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.*.*.*
4

1 回答 1

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
于 2015-07-07T02:43:17.673 回答