【问题标题】:Get IP address of KVM Guest vm获取 KVM Guest vm 的 IP 地址
【发布时间】:2017-10-06 11:40:01
【问题描述】:

有没有一种方法可以使用 bash 获取 KVM 来宾客户端的 IP 地址?我需要将此添加到 bash 脚本中以自动化流程,其中一部分需要获取 VM 的 IP 地址并将其传递给变量。

我在网上看到了很多东西,但似乎都没有。

任何帮助或建议将不胜感激

【问题讨论】:

  • KVM 只是虚拟化堆栈的内核部分。我假设您使用的是 libvirt,并且是 libvirt 管理网络?
  • 没错,我正在使用 libvirt,它正在管理网络
  • 好的,所以我尝试了 virsh domifaddr 命令,但没有返回任何结果。我在这里遗漏了一些东西,但不确定是什么。
  • virsh domifaddr 仅返回指定 VM 的 DHCP 租约。如果 VM 未运行或只有静态 IP,则它不返回任何内容。

标签: bash ip centos7 kvm


【解决方案1】:
#!/bin/bash

ip=$(for mac in `sudo virsh domiflist $buildname |grep -o -E "([0-9a-f]{2}:){5}([0-9a-f]{2})"` ; do sudo arp -e |grep $mac  |grep -o -P "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" ; done)
#iphost="$ip   appliance"

echo $ip

【讨论】:

    【解决方案2】:

    我写了一个get-vm-ip 脚本(你可以从https://github.com/earlruby/create-vm/blob/master/get-vm-ip 下载)使用它来获取IP:

    HOSTNAME=[your vm name]
    MAC=$(virsh domiflist $HOSTNAME | awk '{ print $5 }' | tail -2 | head -1)
    arp -a | grep $MAC | awk '{ print $2 }' | sed 's/[()]//g'
    

    virsh命令获取MAC地址,最后一行使用arp查找IP地址。

    【讨论】:

    • virsh -q 去掉了标题的东西,所以你可以跳过 tailhead 的东西。
    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2013-01-16
    • 2011-02-07
    • 2011-08-06
    相关资源
    最近更新 更多