0

我想用 Python 对 Linux 内核进行流量控制,以模拟丢失、损坏和重复的包。我已经能够使用 Linux 终端进行配置,但我必须使用 python。

bash cmd 的工作原理:

tc filter show dev eth1

蟒蛇不起作用:

>>> subprocess.call(["tc", "filter", "show", "dev", "eth1"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/subprocess.py", line 470, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
    errread, errwrite)
  File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

谢谢。

4

2 回答 2

3

python 子进程不知道您的 shell 环境。因此,请提供命令的绝对路径,例如:

subprocess.call(["/sbin/tc", "filter", "show", "dev", "eth1"])

which tc在你的 shell 中 使用命令找到确切的位置。

于 2014-08-13T13:12:12.600 回答
0

如果您不需要任何特殊控制,基本方法是使用os.system()启动命令,就像您在 shell 命令行中一样(如果在 $PATH 中则无需指定完整路径):

import os
os.system("tc filter show dev eth1")

这应该与您在 cmd 中所做的完全一样:

$ tc filter show dev eth1
于 2014-08-13T13:17:22.403 回答