我正在尝试在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中使用我需要的数据。
答案 0 :(得分:0)
我得出的结论是,我只能使用traceroute
解析subprocess
的输出。 traceroute
能够通过对代码的某些部分使用setuid
来有效地允许代码的这一部分以root身份运行,从而克服根要求。由于我无法在没有root权限的情况下建立这些权限,因此我不得不依赖traceroute
的存在,因为这种情况更可能发生在这两种情况中。