我正在编写一个 python 3 脚本,我需要实现一个函数,在其中 ping 服务器以查看它是否可访问。唯一的是我有以下限制
python3 是否存在这样的库?或者还有其他方法来实现这个吗?
我尝试过使用以下库: icmplib 、 ping3 、 pingparsing 和其他一些库,但它们需要提升权限才能发送 icmp 数据包,而在我的场景中,这不是一个选项。
我们要求服务器应监听 至少一个 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 响应就报告失败。