我(我们)正在使用 python 创建数据包并捕获回复以测试网络设备。为了提供我使用过的 python 功能:
sudo setcap cap_net_admin,cap_net_raw+eip /usr/bin/python2.7
当我检查功能时,设置看起来不错:
getcap /usr/bin/python2.7
/usr/bin/python2.7 = cap_net_admin,cap_net_raw+eip
如果我运行我的脚本,我会收到以下错误:
dumpcap: The capture session could not be initiated on interface 'eth2' (You don't have permission to capture on that device).
Please check to make sure you have sufficient permissions, and that you have the proper interface or pipe specified.
如果我直接通过以下方式为 dumpcap 提供功能:
sudo setcap cap_net_admin,cap_net_raw=eip /usr/bin/dumpcap
这使脚本运行,但它并没有解决我的 python 无法使用 cap_net_admin 的问题。
有什么方法可以检查我正在运行的 python 进程是否获得了正确的功能?或者为什么 python2.7 似乎没有继承我系统上的功能?
为了确保调用正确的文件/进程,我使用 /usr/bin/python2.7 作为要调用的可执行文件。相同的 python 代码适用于我公司的其他人。我正在运行 Ubuntu 16.04。问候