【问题标题】:Shell script to find the IP address of an Virtual machine created by using KVM/virsh command用于查找使用 KVM/virsh 命令创建的虚拟机 IP 地址的 Shell 脚本
【发布时间】:2015-05-04 14:49:09
【问题描述】:

我正在寻找 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.*.*.*

【问题讨论】:

  • 与您的问题无关,但您可以考虑使用 XMLStarlet 之类的工具,而不是尝试使用 grep 和 sed 对 XML 进行操作(如果该内容的详细信息本来就容易破坏是印刷精美的变化)。
  • 除此之外,我强烈考虑使用set -x 来跟踪您的脚本的执行情况,并准确确定它在哪里以及如何偏离您的预期。
  • ...尽管如此,但这并不适合 StackOverflow,因为您的问题与 MCVE(最小、完整、可验证的示例)有些相反:它不能在没有其他所有人都拥有的工具和环境的情况下运行(即使是使用 libvirt 的人也可能具有不同配置的网络,以至于他们无法重现您的问题/也无法使用此工具)。如果您缩小问题的范围,那么您可以提出一个不需要 libvirt / virsh / 等来重现或测试解决方案的问题。
  • 您的命令包含相当复杂的嵌套引号。尝试使用临时变量。例如:mac_addr=$( virsh dumpxml $name | grep "mac address" | sed "s/.*'\(.*\)'.*/\1/g" ).
  • 现在我正在获取 MAC 地址,如何从 arp 表中获取 IP 地址?

标签: linux shell unix kvm virsh


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多