linux – 网络上所有计算机的主机名发现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 网络上所有计算机的主机名发现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1993字,纯文字阅读大概需要3分钟。
内容图文
问题:我正在为分布式CPU / GPU模拟器开发图形前端.由于此模拟器使用MPI,因此需要一个主机文件,详细说明网络上使用的所有计算机的主机名,以便它知道要分配的计算机.由于我的应用程序的最终用户不是计算机科学家(甚至可能不是计算机知识),我不能指望他们知道/找到他们网络/集群上每台计算机的主机名.我想以编程方式执行此主机名发现,以便在应用程序启动时,用户可以看到可用的计算机,然后从中选择要运行的主机.如果可能的话,我希望这个解决方案是跨平台的,但由于模拟器目前包含一些Linux依赖项,我可以处理仅Linux的解决方案.
到目前为止我尝试过:我尝试使用nmap包来发现网络上的主机,其命令如nmap -sP< ip address range>使用该本地网络的IP地址范围.但是,它只转储主机的IP地址(而不是主机名),我不知道如何将这些IP地址转换为ssh主机名(因为MPI使用ssh进行主机发现).另外,我使用类似的方法,ping提供广播地址,它返回几乎相同的结果.
我为这个问题的广泛性和缺少的代码道歉,但我对网络探测/编程不是很有经验,我甚至不确定从哪里开始.我试过谷歌搜索,但我无法找到合适的选项(可能是因为我缺乏经验导致我使用不正确的术语触发不正确的结果)我的背景主要是图形和用户界面编程,所以这有点超出我的舒适区.
解决方法:
SSH不关心是否给出了要连接的主机名或IP地址(当有特定于主机的配置时,不确定是否适用).大多数MPI实现也不关心,例如在Open MPI连接中,URI地址都是数字,因此具有IP的主机文件可以正常使用.另一方面,HTTP服务器关心的是虚拟主机事件,其中许多不同站点解析为相同的IP地址,但服务器通过主机HTTP头提供实际主机名.
未经请求的建议:通过ping查找主机很好,但它并不能保证您找到了正在运行SSH的计算机.您最好扫描接受TCP连接的端口22打开的系统:
$nmap -oX -sT -p22 <ip range>
-oX生成可轻松解析的XML输出. -oG也是一种很好的自动解析扫描结果的格式.运行SSH也不一定意味着用户可以登录系统 – 例如,它可以是网络路由器或其他可远程管理的设备.还必须注意仅显示用户可以登录而不必提供密码的机器,例如,使用RSA / DSA公钥,否则启动MPI工作将是一项非常繁琐的任务.您可以使用以下内容测试找到的每个主机:
$ssh -2 -o "PreferredAuthentications=gssapi-with-mic,hostbased,publickey" <host> hostname
此命令基本上排除所有交互式身份验证方法.如果连接成功,它将输出远程计算机的主机名.否则,您将从SSH客户端获得权限被拒绝错误和非零退出代码.
内容总结
以上是互联网集市为您收集整理的linux – 网络上所有计算机的主机名发现全部内容,希望文章能够帮你解决linux – 网络上所有计算机的主机名发现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。