需要说明的是:2周前我才刚开始使用Python,但是我是C#,ASP,PHP,JavaScript开发人员。
我刚刚使用Python和PyQt启动了一个新项目,并且希望我的项目成为一台能够与其他计算机上的该服务器的其他实例进行通信的服务器。
因此,我需要获取计算机的IP地址和主机名。
首先,我考虑过使用MSDOS“ net view”命令,但这是在尝试执行此命令之前,我发现这可能需要大约15秒的时间(我认为这太慢了)。
我有这样的想法:https : //stackoverflow.com/a/15497083/1598891
同样,“ net view”命令可以返回不再在网络上的计算机,并在尝试通过主机名获取其IP地址时导致异常(这也使每次无法访问计算机的过程变慢)。
我的问题:是否有一种方法可以使本地计算机上的所有计算机的IP和主机名不经过net view
Windows传递,因为这net view
可能会导致操作缓慢?
另外,有没有办法只获取正在运行我的应用程序的计算机?(这样会更快)
提前致谢
如果要获取运行python脚本的主机的IP地址,则可以通过user2096338提供的答案。
为了发现局域网内网络上的所有计算机,您可以使用scapy。https://github.com/bwaldvogel/neighbourhood/blob/master/neighbourhood.py是我在浏览类似的SO问题时发现的链接;发现网络(LAN)中的所有计算机。
如果要确保上述脚本仅返回正在运行服务器的计算机,则可以通过多种方式来实现,以下按可移植性顺序列出
在我看来,方法1是最安全和可移植的,因为它可以防止打开不必要的端口(如方法3),这些端口是安全漏洞(取决于您的python脚本运行的上下文)。它还不取决于远程主机上WMI服务的可用性(某些系统可能已禁用WMI)。
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句