我需要检查远程主机是 Windows 还是 Unix/Linux。我不能假设它配置了 Web 服务器。我所能做的就是尝试连接到几个 TCP 或 UDP 服务。
哪些 TCP 服务(TCP 端口号)通常会在 Windows 上打开,而不是在 Unix/Linux 上打开,反之亦然?
另一种方法是尝试 ssh 到它,如果它失败,则假定它是 Windows 主机。问题是,我需要这个来选择远程访问方法 ssh 或 Windows 友好的方法,如 psexec。
我需要检查远程主机是 Windows 还是 Unix/Linux。我不能假设它配置了 Web 服务器。我所能做的就是尝试连接到几个 TCP 或 UDP 服务。
哪些 TCP 服务(TCP 端口号)通常会在 Windows 上打开,而不是在 Unix/Linux 上打开,反之亦然?
另一种方法是尝试 ssh 到它,如果它失败,则假定它是 Windows 主机。问题是,我需要这个来选择远程访问方法 ssh 或 Windows 友好的方法,如 psexec。
为什么不尝试以一种方式连接,如果失败,则以另一种方式连接,如果两者都不起作用,请告诉用户?
如果这就是您要做的全部,则无需实际检查操作系统。
这不是一件容易确定的事情,因为很少有端口会在一个操作系统上始终打开,而在另一个操作系统上则不会。
您可以尝试以下部分/全部
我建议扫描端口范围可能会给您带来麻烦,特别是如果这些不是您的机器。您可能会发现您的 IP 地址被记录为“端口扫描程序”的可能来源
网络上有一些相当广泛的可用端口列表。例如http://keir.net/portlist.html