我目前正在编写一个脚本来从 cisco 配置生成报告以用于审计目的。使用“grep”命令,我能够成功捕获全局配置。
但挑战在于每个界面都做到这一点。例如,我想知道哪些接口有“no ip redirects”、“no ip unreachables”等行。如何在 bash 中完成此操作?
先感谢您!
这不能用 轻松完成grep
,但要awk
处理:
cat file
!
interface GigabitEthernet0/13
description Server_32_main
spanning-tree portfast
no ip redirects
!
interface GigabitEthernet0/14
description Server_32_log
switchport access vlan 666
spanning-tree portfast
!
interface GigabitEthernet0/15
description UPS_20
spanning-tree portfast
!
如您所见,每个组由 分隔!
,因此我们使用它来分隔每条记录。
要仅获取接口名称,请执行以下操作:
awk -v RS="!" -F"\n" '/no ip redirects/ {print $2}' file
interface GigabitEthernet0/13
要获取接口配置,请执行以下操作:
awk -v RS="!" '/no ip redirects/' file
interface GigabitEthernet0/13
description Server_32_main
spanning-tree portfast
no ip redirects
一次获得更多模式:
awk -v RS="!" '/no ip redirects/ || /no ip unreachables/' file