如何以编程方式检查远程主机的操作系统?

发布于 2024-09-11 11:23:38 字数 254 浏览 5 评论 0原文

我需要检查远程主机是 Windows 还是 Unix/Linux。 我不能假设它已配置网络服务器。 我所能做的就是尝试连接到多个 TCP 或 UDP 服务。

哪些 TCP 服务(TCP 端口号)通常会在 Windows 上打开,而不会在 Unix/Linux 上打开,反之亦然?

另一种方法是尝试通过 ssh 连接到它,如果失败,则假定它是 Windows 主机。问题是,我需要这个来选择远程访问方法 ssh 或 Windows 友好的方法,如 psexec。

I need to check if remote host is Windows or Unix/Linux.
I can't assume that it has web server configured.
All I can do is to try to connect to several TCP or UDP services.

Which TCP services (TCP port numbers) usually will be opened on Windows and not on Unix/Linux and vise versa?

The other way is to try to ssh to it, and if it fails assume that it Windows host. The problem is, that I need this in order to choose the remote access method ssh or something Windows friendly like psexec.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月隐月明月朦胧 2024-09-18 11:23:38

您可以读取 nmap 的输出来检测远程主机正在运行哪个操作系统。它有一个专门用于此目的的完整模块。这是使用指南

You can read the output of nmap to detect which OS a remote host is running. It has a whole module dedicated to this. Here is a guide to using it.

黯然#的苍凉 2024-09-18 11:23:38

为什么不尝试以一种方式连接,如果失败,再以另一种方式连接,如果两者都不起作用,则告诉用户?

如果这就是您想做的全部事情,则无需实际检查操作系统。

Why not just try to connect one way, and if that fails, connect the other way, and if neither work, tell the user?

If that's all you're trying to do, there's no need to actually check the OS.

捶死心动 2024-09-18 11:23:38

要以任何程度的确定性回答这个问题都不是一件容易的事情,因为很少有端口始终在一个操作系统上打开,但在另一个操作系统上则不打开。

您可以尝试以下部分/全部

  • 80 http 显然
  • 22,23 Telnet 和 SSH(通常在 Windows 上不打开,至少通常在 *nix 上打开一个)
  • 135 由 WMI 使用,因此经常在 Windows 上打开
  • 1443(可能是 SQL Server)
  • 691 使用
  • 由 MS Exchange 路由3389 MS 远程桌面

我建议扫描端口范围可能会给您带来麻烦,特别是如果这些不是您的计算机。您可能会发现您的 IP 地址被记录为“端口扫描程序”的可能来源。

网络上有一些相当广泛的可用端口列表。例如 http://keir.net/portlist.html

This is not an easy thing to answer with any degree of certainty as there are very few ports that will always be open on one OS but not on another.

You could try some/all of the following

  • 80 http obviously
  • 22,23 Telnet and SSH (Not usually open on windows, one at least usually open on *nix)
  • 135 Used by WMI so often open on windows
  • 1443 (Possibly SQL Server)
  • 691 Used by MS Exchange routing
  • 3389 MS Remote Desktop

I would suggest that scanning ranges of ports may lead you into trouble particularly if these are not your machines. You may find your IP address logged as a possible source of "Port Scanners"

There are some fairly extensive lists of ports available on the web. e.g. http://keir.net/portlist.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文