我正在寻找shell脚本来查找使用KVM / VIRSH创建的虚拟机的IP地址。
我使用以下步骤来实现它,但无法找到它。
2.使用Virsh list命令列出所有活动的VM
3.使用Virsh dumpxml domainname并投影vml的xml
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.*.*.*
答案 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