首页 > 解决方案 > 如何在 Python 中实现非 root 和非子进程 ping?

问题描述

我需要在我的 Python 应用程序中实现 ping 以获取特定主机的 RTT。有几种方法可以做到这一点:

  1. 使用 PyPI 包之一(例如,pyping、ping、multiping、scapy 等)。但是所有这些包都创建了一个原始套接字来处理 ICMP 数据包。这对我来说是不可接受的。

  2. 自己创建原始套接字。由于上述原因,这是不可接受的。我还尝试像这样创建 ICMP 套接字: socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_ICMP) 它在我的机器上不起作用。

  3. 通过子进程启动ping实用程序。但它的工作速度相对较慢,而且看起来很丑。

  4. TCP 平。这在我的项目中是不可接受的。

您能否建议我以不同的方式在没有 root 权限的情况下实现 ping 并ping在不同进程中使用实用程序?也许存在一些不同的方式来获取某个主机的 RTT

Python2.7、Ubuntu16

标签: pythonubuntuping

解决方案


推荐阅读