我正在尝试在 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)
的套接字时遗漏了什么。似乎 socket.SOCK_RAW
在没有 root 权限的情况下无法访问,这有效地阻止了我使用在 python 中实现它所需的数据。
最佳答案
我得出的结论是,我仅限于使用 subprocess
解析 traceroute
的输出。 traceroute
能够通过对部分代码使用 setuid
来克服 root 要求,有效地允许该部分代码以 root 身份运行。由于我无法在没有 root 权限的情况下建立这些权限,因此我不得不依赖 traceroute
的存在,因为这是两种情况中更有可能发生的情况。
关于python - 在没有root的情况下在Python中实现UDP traceroute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17027970/