虚拟机和宿主机怎么关联

来源:5-15 kvm物理机资产探测扫描--通过kvm宿主机关联虚拟机的方式

qq_我们要去大草原的湖边_0

2021-07-02

虚拟机的mac地址能获取到,宿主机上的虚拟机mac地址列表也能获取到。但是就是不知道这个关系要怎么对应,下面我写了我的伪代码

循环整个网段并登陆判断是否有kvm的进程

physical_list = []
virtual_list = []

if "ps -ef | grep kvm":
	如果有这个进程肯定是宿主机,然后就获取到宿主机里面的虚拟机mac地址列表
	physical_list.append({物理机IP: 虚拟机mac列表})
else:
	没有这个进程肯定就是虚拟机,然后获取虚拟机的mac地址
	virtual_list.append({虚拟机IP: 虚拟机mac地址})
	

我这样获取整个网段登陆一次,最后获取到的physical_list,virtual_list这两个列表关系太复杂,对比起来不容易。要不然就得整个网段登陆两次获取到关系。有没有整个网段就登陆一次,就可以把关系对应好的方法?或者有其他更好的思路

写回答

2回答

刀O_o叉

2021-08-20

from scapy.all import srp, Ether, ARP

network = "xx.xx.xx.xx/24"

def scan(self):
    try:
        ans,unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=network), timeout=2)
    except Exception as e:            
        print(e)        
    else:            
        ip = []
        mac = []            
        for send, rcv in ans:
            ip.append(rcv.sprintf("%ARP.psrc%"))
            mac.append(rcv.sprintf("%Ether.src%"))
            host = dict(zip(mac, ip))
        return host

if __name__ == "__main__":
    print(scan())

直接扫网段IP就可以了

0
0

Jeson

2021-07-08

如果登录一次只能获取到主机信息,获取不到硬件主机和虚拟机关系

0
0

Python+Django+Ansible Playbook自动化运维项目实战

【课程升级3.6版本】大牛全面践行DevOps,运维与开发间高效协作

861 学习 · 326 问题

查看课程