根据匹配条件执行 iproute2 操作

根据匹配条件执行 iproute2 操作

使用 iproute2 时,是否有办法使用通配符或其他匹配条件?我有多个遵循命名约定的隧道接口。例如ip 隧道 del blah-*(出现错误:ioctl:没有这样的设备) 就很棒了,无需创建自定义脚本。

答案1

据我所知,语法非常清楚:

Usage: ip tunnel { add | change | del | show | prl } [ NAME ]
          [ mode { ipip | gre | sit | isatap } ] [ remote ADDR ] [ local ADDR ]
          [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]
          [ prl-default ADDR ] [ prl-nodefault ADDR ] [ prl-delete ADDR ]
          [ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]

Where: NAME := STRING
       ADDR := { IP_ADDRESS | any }
       TOS  := { NUMBER | inherit }
       TTL  := { 1..255 | inherit }
       KEY  := { DOTTED_QUAD | NUMBER }

NAME 必须是 STRING,因此不能是通配符模式。我知道您希望避免这种情况,但最好的办法可能是编写一个 shell 包装器来执行如下操作:

#! /bin/bash
PATTERN="$1"
for t in $(ip tunnel show | awk -F: '{print $1}' | grep -E "$PATTERN"); do
    ip tunnel del $t
done

然后只需像这样调用你的脚本:deltunnels.sh "^blah-*"

我认为那应该可行。

相关内容