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

时间:2015-09-21 15:53:48

标签: c# linux wmi solaris

我有远程计算机的IP地址和服务器名称。如果计算机运行Windows,我可以查询WMI以获取OS version,但是如果计算机没有运行Windows,我可以查询远程计算机并获取OS versionLinuxSolaris)?

3 个答案:

答案 0 :(得分:2)

我想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);
                }
            }
        }
    }    

答案 1 :(得分:0)

有很多方法可以检测远程计算机是使用Windows操作系统还是Linux。信息收集包括渗透测试中的那部分。 基本上,在扫描远程计算机上的端口数量和这些端口上运行的服务之后,我们可以确定远程计算机上安装了哪些操作系统。 还有一种方法可以检查它,您可以使用 SNMP协议来实现此目的。

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

当量

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

将为您提供与远程计算机相关的信息。 默认情况下,&lt;社区字符串&gt; 公开

答案 2 :(得分:-1)

从你的Windows PC

知道什么是远程PC的Windows版本,你可以运行windows命令&#34; systeminfo / s [PCname]&#34;或者你可以使用