해당 섹션에서 Cisco 인터페이스 이름과 모든 IP 주소를 grep하는 방법

해당 섹션에서 Cisco 인터페이스 이름과 모든 IP 주소를 grep하는 방법

다음은 내가 받은 Cisco 구성 파일의 예입니다.https://resources.intenseschool.com/mpls-basic-configuration/이 질문과 관련이 있도록 약간 수정했습니다.

나는 그것을 저장 하고 egrep을 사용하여 해당 섹션 아래의 모든 IP 주소 이름을 file.txt지정해 보았습니다 .interface

file.txt

interface Loopback0
 description ** test **
 ip address 10.1.1.11 255.255.255.255
!
interface FastEthernet0/0
 description ** Connection to ABC **
 bandwidth 3000
 ip address 10.0.12.1 255.255.255.0
 mpls ip
!
interface FastEthernet0/1
 ip flow monitor all-traffic-monitor output
 ip address 10.0.100.1 255.255.255.0
!
interface Ethernet1/0
 description ** Connection to XYZ **
 ip address 10.0.13.1 255.255.255.0
 ip helper-address 10.1.1.1
 ip helper-address 10.1.1.2
!
router ospf 1
 network 1.1.1.1 0.0.0.0 area 0
 network 10.0.12.0 0.0.0.255 area 0
 network 10.0.13.0 0.0.0.255 area 0
!
router bgp 14
 neighbor 10.4.4.4 remote-as 14
 neighbor 10.4.4.4 update-source Loopback0
 network 10.0.100.0 mask 255.255.255.0
 redistribute static
 no auto-summary
!
ip route 192.168.100.0 255.255.255.0 10.0.100.10
!

원하는 출력

interface Loopback0
 ip address 10.1.1.11 255.255.255.255

interface FastEthernet0/0
 ip address 10.0.12.1 255.255.255.0

interface FastEthernet0/1
 ip address 10.0.100.1 255.255.255.0

interface Ethernet1/0
 ip address 10.0.13.1 255.255.255.0
 ip helper-address 10.1.1.1
 ip helper-address 10.1.1.2

다음은 몇 가지 시도이지만 그 중 어느 것도 내가 원하는 결과를 생성하지 않습니다.

1번 시도

통사론:egrep ^interface file.txt

문제: IP가 캡처되지 않았습니다.

[user@linux ~]$ egrep ^interface file.txt
interface Loopback0
interface FastEthernet0/0
interface FastEthernet0/1
interface Ethernet1/0
[user@linux ~]$

2번 시도

통사론:egrep -A2 ^interface file.txt

interface문제: 데이터가 너무 많습니다. 해당 섹션 아래의 라인과 모든 IP 주소 만 원합니다.

[user@linux ~]$ egrep -A2 ^interface file.txt
interface Loopback0
 description ** test **
 ip address 10.1.1.11 255.255.255.255
--
interface FastEthernet0/0
 description ** Connection to ABC **
 bandwidth 3000
--
interface FastEthernet0/1
 ip flow monitor all-traffic-monitor output
 ip address 10.0.100.1 255.255.255.0
--
interface Ethernet1/0
 description ** Connection to XYZ **
 ip address 10.0.13.1 255.255.255.0
[user@linux ~]$

3번 시도

통사론:egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt

문제: IP 주소만 인쇄하는데 인터페이스 이름도 알고 싶습니다.

[user@linux ~]$ egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
 ip address 10.1.1.11 255.255.255.255
 ip address 10.0.12.1 255.255.255.0
 ip address 10.0.100.1 255.255.255.0
 ip address 10.0.13.1 255.255.255.0
 ip helper-address 10.1.1.1
 ip helper-address 10.1.1.2
 network 1.1.1.1 0.0.0.0 area 0
 network 10.0.12.0 0.0.0.255 area 0
 network 10.0.13.0 0.0.0.255 area 0
 neighbor 10.4.4.4 remote-as 14
 neighbor 10.4.4.4 update-source Loopback0
 network 10.0.100.0 mask 255.255.255.0
ip route 192.168.100.0 255.255.255.0 10.0.100.10
[user@linux ~]$

4번을 시도해 보세요

통사론:egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt

interface문제: 거의 작동하지만 데이터가 너무 많습니다. 해당 섹션 아래의 라인과 모든 IP 주소 만 원합니다.

[user@linux ~]$ egrep '^interface|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' file.txt
interface Loopback0
 ip address 10.1.1.11 255.255.255.255
interface FastEthernet0/0
 ip address 10.0.12.1 255.255.255.0
interface FastEthernet0/1
 ip address 10.0.100.1 255.255.255.0
interface Ethernet1/0
 ip address 10.0.13.1 255.255.255.0
 ip helper-address 10.1.1.1
 ip helper-address 10.1.1.2
 network 1.1.1.1 0.0.0.0 area 0
 network 10.0.12.0 0.0.0.255 area 0
 network 10.0.13.0 0.0.0.255 area 0
 neighbor 10.4.4.4 remote-as 14
 neighbor 10.4.4.4 update-source Loopback0
 network 10.0.100.0 mask 255.255.255.0
ip route 192.168.100.0 255.255.255.0 10.0.100.10
[user@linux ~]$

이 외에 더 좋은 도구가 있으면 egrep알려주시기 바랍니다.

답변1

사용:

perl -lne 'print "\n$_" if /interface/; print if / ip ./' file

사용:

awk '/interface/{print "\n"$0} / ip ./' file

 산출

interface Loopback0
 ip address 10.1.1.11 255.255.255.255

interface FastEthernet0/0
 ip address 10.0.12.1 255.255.255.0

interface FastEthernet0/1
 ip flow monitor all-traffic-monitor output
 ip address 10.0.100.1 255.255.255.0

interface Ethernet1/0
 ip address 10.0.13.1 255.255.255.0
 ip helper-address 10.1.1.1
 ip helper-address 10.1.1.2

관련 정보