我们正在编写一个管理服务器的应用程序,我需要能够查看网络中任何远程机器上运行的操作系统。
我们并不总是拥有查看此信息的凭据,因此WMI不是解决方案。
我只需要知道它是否运行Windows、Linux或其他操作系统。以及操作系统的版本。
目前,我们从这些服务器上的数据库获取此信息。但我想在不询问数据库的情况下完成此操作。
如果我只有IP地址或DNS名称而没有凭据,是否可能获取此信息?C#/.Net Core解决方案将是理想的选择。或者任何可以实现此功能的协议也可以,我会将其转换为C#。
结论
因此,根据可用和不可用的选项,这里提出了以下选项。
我们并不总是拥有查看此信息的凭据,因此WMI不是解决方案。
我只需要知道它是否运行Windows、Linux或其他操作系统。以及操作系统的版本。
目前,我们从这些服务器上的数据库获取此信息。但我想在不询问数据库的情况下完成此操作。
如果我只有IP地址或DNS名称而没有凭据,是否可能获取此信息?C#/.Net Core解决方案将是理想的选择。或者任何可以实现此功能的协议也可以,我会将其转换为C#。
结论
因此,根据可用和不可用的选项,这里提出了以下选项。
- 如果您在远程计算机上拥有管理员帐户,则WMI是最佳方法。此处有来自learn.microsoft.com的示例
- 如果您可以访问像SQL这样的数据库,则可以查询SQL以返回操作系统信息。这将因数据库和版本而异,因此研究至关重要。
- 使用类似nmap的工具可以通过端口指纹识别获取操作系统信息。这并不总是准确的,取决于服务器安全性和设置。感谢@MindSwipe和@BlackSpy
- 使用代理发送此信息也是一种可能性,并且是一个很好的方法,但这需要一些开销,可以通过适当的设置避免。感谢@BlackSpy和@Clint