删除特定接口上的 tc 配置

Aks*_*235 6 trafficshaping traffic

我是使用 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 配置时删除配置的接口,否则不会。

pun*_*eth 6

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

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

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

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

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


Aks*_*235 4

我想我找到了一种方法来做到这一点。

我可以使用类似的东西:

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"
Run Code Online (Sandbox Code Playgroud)

  • 一个简单的“sudo tc qdisc del dev eth1 root netem 2>/dev/null || true”也应该可以解决这个问题,因为这个错误是你所期望的 (3认同)