匹配 JUNOS 的通配符

网络工程 瞻博网络
2021-07-27 13:53:01

嗨,我正在尝试将路由实例与 VPLS-* 以外的名称匹配,基本上任何以 V* 开头但不是 VPLS-* 的名称

我尝试了下面的多个不同迭代,但似乎忽略了所有以 V* 开头的名称

set groups ALLOW_MARTIAN_192 routing-instances <"![VPLS-*], V*"> routing-options martians 192.0.0.0/24 orlonger allow

有什么帮助吗?

1个回答

我认为这在 Junos 应用组正则表达式的范围内是不可能的:

为了使用!运算符来否定匹配,您必须在方括号中指定一个字符类[],但是将像这样的字符串VPLS-放入字符类中,每个字符似乎都被视为逻辑 OR 例如:V or P or L or S or -,这意味着任何包含V因为第一个字符将被匹配和排除。

奇怪的是,虽然这并不完全一致 - 重新排列字母VPLS会产生不同的结果,例如:PVLS-不匹配,但SLPV-确实 - 我不明白为什么:

groups {
    RI-DESCRIPTION {
        routing-instances {
            "<[!VPLS-*]*>" {
                description "This is from an apply-group";
            }
        }
    }
}

root# show routing-instances | display inheritance no-comments
DIFFERENT-VR {
    description "This is from an apply-group";
    instance-type virtual-router;
}
PVLS-2 {
    instance-type virtual-router;
}
RV-1 {
    description "This is from an apply-group";
    instance-type virtual-router;
}
SLPV-1 {
    description "This is from an apply-group";
    instance-type virtual-router;
}
VPLS-1 {
    instance-type vpls;
}
VPLS-2 {
    instance-type vpls;
}
VREF-2 {
    instance-type virtual-router;
}

一种解决方案可能是set routing-instance VPLS-xxx apply-groups-except ALLOW_MARTIAN_192在每个 VPLS 实例下使用- 不幸的是,您必须手动执行此操作,因为您无法apply-groups-exceptgroups<VPLS-*>.