我有一个在Linux上运行的Python脚本,它需要反复可靠地读取ARP表,以便检查一些IP-MAC关联。我正在评估可能的选项,并想知道其中哪一个是最精简/最干净的-主要是在性能和开销方面
以下是我目前关注的问题:
subprocess
运行arp -an
并解析输出/proc/net/arp
并解析输出(与#1类似,但获取底层数据的方式不同;像python_arptable这样的库正好可以做到这一点)SIOCGARP
ioctl系统调用轮询ARP表(perhttp://man7.org/linux/man-pages/man7/arp.7.html)。我还没有针对这一点的Python实现,但我相信这是可行的李>subprocess
运行ip neighbor list
并解析输出如果我没有弄错的话,选项1和选项2直接从内核缓存读取表,选项4和选项5使用netlink调用;我不太确定3号落在哪里
有一段时间我在做#5,特别是使用pyroute2,但遇到了一些可靠性问题;e、 g.绝对存在的ARP条目未列出。我有一种感觉,pyroute2对于手头的简单任务来说可能有点太强大了。我目前正在做#2,目前看来效果不错——但不知道是否有更好的方法
虽然我的实现语言是Python,但我相信这个问题并不是非常特定于语言的。我想就以上的优点和缺点提出一些建议。具体而言:
/proc
读取文件更好吗?(选项1与选项2)
目前没有回答
相关问题 更多 >
编程相关推荐