8

我是使用 tc 命令的新手。

我正在编写一个测试脚本来为接口添加延迟。这是使用python和fabric api完成的

因此脚本将执行以下操作:

sudo tc qdisc 添加 dev eth1 root netem 延迟

在脚本结束时,我们会做

sudo tc qdisc del dev eth1 root netem

但同时我想在一开始就确保系统上没有现有的 tc 控制。所以我想在整个脚本开始之前运行删除命令。但是如果没有完成 tc 配置,这会给我一个错误。

abc@abcvmm:~$ sudo tc qdisc del dev eth1 root netem

RTNETLINK 答案:无效的参数

有没有办法删除配置的接口,只有在现有的 tc 配置完成而不是其他情况下。

4

2 回答 2

6

你的第一步是: tc qdisc del dev eth1 root

然后: tc qdisc add dev eth1 root handle 1: htb default 100

在我的 git 存储库中检查我的代码:https ://github.com/Puneeth-n/tcp-eval/blob/development/topology/build_net.py

我想我已经实现了你想要实现的东西(使用织物)。或者您可以使用部分代码。

该代码确保在您尝试删除不存在的 qdisc 时没有错误。

于 2014-06-13T13:30:26.470 回答
2

我想我找到了一种方法。

我可以使用类似的东西:

netem_exists= run("tc qdisc show dev eth1 | grep netem | awk '{print $2}'")
        if netem_exists=="netem":
            print "Delete"
            run("sudo tc qdisc del dev eth1 root netem")
        else:
            print "No delete"
于 2014-05-05T23:09:38.450 回答