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