python - 如何在 Python 中实现非 root 和非子进程 ping?
问题描述
我需要在我的 Python 应用程序中实现 ping 以获取特定主机的 RTT。有几种方法可以做到这一点:
使用 PyPI 包之一(例如,pyping、ping、multiping、scapy 等)。但是所有这些包都创建了一个原始套接字来处理 ICMP 数据包。这对我来说是不可接受的。
自己创建原始套接字。由于上述原因,这是不可接受的。我还尝试像这样创建 ICMP 套接字:
socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_ICMP)
它在我的机器上不起作用。通过子进程启动
ping
实用程序。但它的工作速度相对较慢,而且看起来很丑。TCP 平。这在我的项目中是不可接受的。
您能否建议我以不同的方式在没有 root 权限的情况下实现 ping 并ping
在不同进程中使用实用程序?也许存在一些不同的方式来获取某个主机的 RTT?
Python2.7、Ubuntu16
解决方案
推荐阅读
- c++ - 在initialization_list中需要传递不同类型
- sql - 获取 SQL Server 2017 中数据库中每一列的最高值
- c++ - 指针和数组作为模板参数的区别
- awkward-array - ak.add 功能类似于 np.add
- android - 如何在 Activity 内的 RecyclerView 适配器声明中声明单击侦听器
- jestjs - 赛普拉斯控制台日志断言 `callWith` 太严格 - 如何断言松散的相等检查?
- c++ - Cygwin64 不会显示我的 C++ 可执行文件
- python - 如何在 f2py 中将多维函数作为参数传递?
- android - Kotlin Fragment Recyclerview 未更新
- asp.net-core-webapi - 在asp.net core 3.1 web api中使用IOption从配置中读取connectionString