使用 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-*"
我认为那应该可行。