Python 库可发送不需要提升权限的 ping?

问题描述 投票:0回答:1

我正在编写一个 python 3 脚本,我需要实现一个函数,在其中 ping 服务器以查看它是否可访问。唯一的是我有以下限制

  • 不能使用子进程,因为所有内容都应该包含在 Python 中。
  • 无法使用常见的 ping 库,如 icmplib 、 ping3 等,因为它们需要脚本以提升的权限运行。

python3 是否存在这样的库?或者还有其他方法来实现这个吗?

我尝试过使用以下库: icmplib 、 ping3 、 pingparsing 和其他一些库,但它们需要提升权限才能发送 icmp 数据包,而在我的场景中,这不是一个选项。

python python-3.x ping icmp pythonping
1个回答
0
投票

我们要求服务器应监听 至少一个 TCP 端口,例如 {80, 443, 22)。

使用请求 连接到该端口。 如果 TCP 3 次握手及时完成, 服务器可达。 如果它很快拒绝尝试, 可能可以访问,但当前未在该端口上侦听, 例如由于重新启动而

nginx
尚未重新启动。

考虑在服务器上创建一个小的 HTML 文档, 然后客户端执行 GET http://example.com/health.html, 声明“可达!”收到

200
状态后。


可以通过 UDP 实现类似的方法, 但它往往不太方便。

故意联系服务器内核 在未使用的端口(例如 81)上发出请求, 可能有一些魅力。 它会提高某些错误计数器 通常保持更接近于零。


执行方式不止一种 这个命令,永远不会退出:

$ ping -i10 server.example.com  >> /tmp/ping.log

例如,我们可以通过以下方法来实现 check_call(), 或通过一些外部守护进程。

有了这个, 对于 python 来说很简单 重复 stat() 日志文件,本质上

tail -f
其结果, 一旦错过 ping 响应就报告失败。

© www.soinside.com 2019 - 2024. All rights reserved.