检查远程主机是否在Python中运行

use*_*736 6 python network-programming network-protocols

如何在没有端口号的情况下检查远程主机是否已启动?有没有其他方法我可以检查其他使用常规ping.

远程主机可能会丢弃ping数据包

jmu*_*sch 12

这对我很好:

HOST_UP  = True if os.system("ping -c 1 " + SOMEHOST) is 0 else False
Run Code Online (Sandbox Code Playgroud)

  • 警告.如果`SOMEHOST`来自用户输入,这可能会带来安全漏洞.例如,如果`SOMEHOST = google.com; echo"讨厌命令"`然后在ping完成后运行用户恶意命令. (6认同)

cle*_*tus 1

你能做的最好的事情是:

  • 尝试连接已知端口(例如,HTTP 或 HTTPS 的端口 80 或 443);或者
  • 对网站进行 ping 操作。请参阅使用 Python Ping 站点?

许多站点会阻止 ICMP(用于 ping 站点的端口),因此您必须事先知道相关主机是否启用了 ICMP。

连接到端口会告诉您混合信息。这实际上取决于您想知道什么。端口可能是开放的,但站点实际上已挂起,因此您可能会得到误报。更严格的方法可能涉及使用 HTTP 库对站点执行 Web 请求,并查看是否收到响应。

这实际上完全取决于您需要了解什么。