我试图使用SNMP对网络中的8000台主机进行扫描,以确定它们是否有桥接的网络接口(我在ISP工作,这是内部设备跟踪)。通过从路由器中提取ARP表获得所有网络设备的列表后,我需要扫描每个主机,这是一个低CPU任务,主要包括等待网络延迟。所以,我用过多处理.池产生50个工人,让他们扫描离开。一切都很好,但是几分钟后(不是在扫描的一致点),进程被终止,我得到一个核心转储。我真的不知道它为什么会在这个时候崩溃。我只能假设内核(OpenBSD)对这一大堆进程非常恼火。有人知道如何让扫描运行吗?在
相关代码(它在网络类定义中,但大部分应该是无关的):
from multiprocessing import Pool
from Host import Host
def getHosts(self, ips):
pool = Pool(50)
self.hosts = pool.map(initHost, ips)
return self.hosts
def initHost(ip):
host = Host(ip)
host.getInterfaces() # Runs a scan via EasySNMP
return host
如果需要的话,我也可以发布主机类的代码,但这只是一些SNMP和属性管理的东西,而且它在不集中的情况下工作得很好,所以我不认为这是问题的根源。在
感谢任何帮助。在
目前没有回答
相关问题 更多 >
编程相关推荐