检测远程计算机是 Windows 还是 Linux OS

Detect if a remote computer is Windows or Linux OS

我有远程计算机的 IP 地址和服务器名称。如果计算机是 运行 Windows,我可以查询 WMI 来获取 OS version,但是有没有办法查询远程计算机并获取 OS version 如果电脑不是运行 Windows (Linux, Solaris)?

从您的 Windows PC 了解远程 PC 的 Windows 版本是什么,您可以 运行 windows 命令 "systeminfo /s [PCname]" 或者您可以使用

我想 Active Directory 会给我我需要的东西。这是我到目前为止所拥有的。看起来很有前途。

    using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
    {
        ComputerPrincipal computer = ComputerPrincipal.FindByIdentity(ctx, "mylinuxservername");

        if (computer != null)
        {
            var unObject = computer.GetUnderlyingObject() as System.DirectoryServices.DirectoryEntry;
            if(null != unObject)
            {
                var osProperty = unObject.Properties.Cast<System.DirectoryServices.PropertyValueCollection>().Where(p => p.PropertyName == "operatingSystem");

                if(null != osProperty.FirstOrDefault())
                {
                    Console.WriteLine(osProperty.FirstOrDefault().Value);
                }
            }
        }
    }    

有很多方法可以检测远程计算机正在使用 Windows OS 或 Linux 。信息收集包括渗透测试部分。 基本上在扫描远程计算机上的端口数和这些端口上的 运行 服务后,我们可以确定远程计算机上安装了什么 OS 。 还有一种方法可以检查它,您可以使用 SNMP 协议 来达到这个目的。

user@host $ snmpget -v2c -c <community string> <computer> <mib / oid >

当量

user@host $ snmpget -v2c -c public x.x.x.x sysDescr.0 

将为您提供与远程计算机相关的信息。 默认情况下 public .