在没有root的情况下在Python中实现UDP traceroute

时间:2013-06-10 15:54:10

标签: python sockets permissions udp traceroute

我正在尝试在Python 2.6中实现UDP traceroute解决方案,但是我无法理解为什么我需要root权限来执行与我的操作系统附带的traceroute实用程序相同的操作。

此代码将运行的环境将非常怀疑具有root权限,因此我更不可能放弃python实现并编写一些东西来解析UDP模式下的OS traceroute的输出?或者是否有一些关于打开配置为self.rx = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)的套接字的缺失。没有root权限似乎无法访问socket.SOCK_RAW,这实际上阻止了我在python中使用我需要的数据。

1 个答案:

答案 0 :(得分:0)

我得出的结论是,我只能使用traceroute解析subprocess的输出。 traceroute能够通过对代码的某些部分使用setuid来有效地允许代码的这一部分以root身份运行,从而克服根要求。由于我无法在没有root权限的情况下建立这些权限,因此我不得不依赖traceroute的存在,因为这种情况更可能发生在这两种情况中。