如果您坚持在 Nexus 上使用 EEM,您可以尝试使用以下两个小程序。我已经对它们进行了测试,它们按预期工作。
event manager applet TrunkAdd
event cli match "conf t ; int * ; switchport trunk allowed vlan add *"
action 1.0 event-default
event manager applet TrunkBlock
event cli match "conf t ; int * ; switchport trunk allowed vlan *"
- 第一个小程序是允许命令,
switchport trunk
allowed vlan add ...
因为我们有event-default
动作。
- 第二个小程序是拒绝命令
switchport trunk allowed vlan
而不add
检测结果:
#show run int Ethernet4/1
interface Ethernet4/1
switchport
switchport mode trunk
switchport trunk allowed vlan 10,30,40,60
no shutdown
#conf t
(config)# interface Ethernet4/1
(config-if)#switchport trunk allowed vlan 20
% Command blocked by event manager policy
(config-if)#switchport trunk allowed vlan add 20
(config-if)#end
#show run int Ethernet4/1
interface Ethernet4/1
switchport
switchport mode trunk
switchport trunk allowed vlan 10,20,30,40,60
no shutdown
请注意,对于 Nexus 上的 EEM,在正则命令表达式中,只能使用星号 (*) 符号来替换参数(此处为Cisco 文档)。我们不能像通常用于正则表达式那样使用其他字符(例如 ^、$、.、[ ]、*、...)。这就是为什么我认为在这种情况下我们不能使用一个小程序。
我希望它有帮助。