问题:我正在开发分布式CPU/GPU模拟器的图形前端。由于该模拟器使用MPI,因此它需要一个hostfile来详细说明网络上所有计算机的主机名,以便它知道要分配哪些计算机。由于我的应用程序的最终用户不是计算机科学家(甚至可能不是计算机专业人员),所以我不能期望他们知道/找到网络/集群中每台计算机的主机名。我想以编程方式执行此主机名发现,以便在应用程序启动时,用户可以看到可用的机器,并从中选择他们想要运行的主机。如果可能的话,我希望这个解决方案是跨平台的,但由于模拟器目前包含一些Linux依赖关系,所以我可以处理一个仅限于Linux的解决方案。网络上所有机器的主机名搜索
我已经试过到目前为止:我试图利用nmap包使用的IP地址范围为本地网络发现主机有命令在网络上像nmap -sP <ip address range>
。但是,它只会转储主机的IP地址(而不是主机名)和我不确定如何将这些IP地址转换为ssh主机名(因为MPI使用ssh进行主机发现)。另外,我使用ping提供的广播地址类似的方法,并且返回了几乎相同的结果。
我对这个问题的广泛性质和缺乏代码表示歉意,但我对网络探测/编程不是很有经验,我真的不知道从哪里开始。我试着用google搜索,但是我找不到合适的选项(可能是因为我的经验不足导致我使用不正确的术语触发不正确的结果)。我的背景主要是图形和用户界面编程,所以这比我的舒适区略微。