Jak - użyj wyrażenia regularnego w Nexusie, aby wyszukać | albo to?

9

Tak irytujące - nie mogę znaleźć dobrej dokumentacji na temat używania polecenia regex Nexusa.

Jeśli więc moje interfejsy wyglądają tak:

interface Vlan224
  description MANAGEMENT
  no shutdown
  ip flow monitor netflow-monitor input  
  no ip redirects
  ip address 10.214.224.2/24
  ip ospf passive-interface
  ip router ospf 1 area 0.0.0.3
  ip pim sparse-mode
  hsrp version 2
  hsrp 224 
  preempt 
  priority 120
  ip 10.214.224.1 

Chcę uruchomić coś podobnego do:

show run | inc (interface Vlan)|(ip address)

Wyjście ma wyglądać podobnie do (gdyby było na IOS):

interface Vlan10
ip address 10.1.10.1 255.255.255.0
interface Vlan 11
ip address 10.1.11.1 255.255.255.0
etc.
Pseudocyber
źródło

Odpowiedzi:

8

Możesz zrobić show run | egrep interface.Vlan|ip.address. Pobiera nieco więcej informacji, ale powinien zapewniać wyniki podobne do tego, co widzisz w IOS. Myślę, że grep może również działać, ale użyłem egrep i uzyskałem poprawne wyjście.

Odeonevets
źródło
To działa. Więc egrep miał miejsce pokazu X | inc? A kod szuka „interfejsu” czegokolwiek „Vlan” LUB „ip” czegokolwiek „adresu”? (bez cytatów)
Pseudocyber
Tak mi się wydaje. Możesz uzyskać dostęp do dokumentacji egrep na 7k tutaj: cisco.com/en/US/docs/switches/datacenter/sw/6_x/nx-os/…
Odeonevets
5

Jeśli szukasz tylko adresów IP interfejsów Vlan, lepszym sposobem może być: show ip int br | grep -i vlan

Uwaga: show ip int brw NXOS pokazuje tylko interfejsy warstwy 3. Aby zobaczyć status wszystkich interfejsów użyjshow int br

AKTUALIZACJA:

dla NXOS 4.0 (2) i wcześniejszych: show run | grep -i face\ vlan|ip\ address

4.0 (3) i więcej: show run | grep ignore-case face\ vlan|ip\ address

także \jak uciec z przestrzeni za pomocą wyrażenia regularnego. Link do wyrażenia regularnego NXOS: http://www.cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/fundamentals/configuration/guide2/fun_3about_cli.html#wp1237003

emynd
źródło
Chcę też mieć informacje o podsieci, dlatego starałem się wyciągnąć je z „show run”.
Pseudocyber
Widzę. Następnie wypróbuj ten dla rozmiaru: show run | grep -i face\ vlan|ip\ address pokaże to również wszystkie wiersze na wyjściu, które zawierają albo „face vlan” lub „adres ip”
emynd
Richard, dzięki, ale weź marchewkę pod f po grep -i
Pseudocyber
powinienem spojrzeć głębiej, przepraszam. Ta składnia powinna działać na NXOS 4.0 (2) i wcześniejszych. Do 4,0 (3) i do wymiany -ize ignore_caseOto link cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/...
emynd
Richard S, więc to brzmi jak to, co kiedyś mogłem robić na iOS z | inc, teraz muszę zrobić w NXOS z | grep ignoruje przypadek bla bla bla. I trzeba uciec spacjami, jak ten „\” bez cudzysłowów? i nadal mogę używać wielu | jako logicznych lub?
Pseudocyber
5

Alternatywna składnia obejmująca pojedyncze cudzysłowy.

# show run | inc 'interface Vlan|ip address'

W NX-OS parsowanie argumentów działa podobnie jak bash.

James Harr
źródło
3

Dokumentacja Widziałem mówi to powinno działać:

show run | inc interface_Vlan|ip_address

Chociaż nie wydaje mi się to na przełączniku ostrza 4k. Miałem sukces z

sh run | inc interface.Vlan|ip.address
Mike Marotta
źródło
To nie działa na 7K. 7K # sh run | inc interface_Vlan | ip_address 7K # sh run | inc interface_Vlan | ip_address - umieszcza marchewkę pod p. Brak wyjścia.
Pseudocyber
Nie mam Nexusa do wypróbowania, ale możesz spróbować (interface.Vlan | ip.address). ^ Pod p brzmi, jakby interpretował "| i" jako drugą potok.
Dave Noonan
@Pseudocyber: * caret :-)
Paul Gear
Według dokumentów, w przeciwieństwie do IOS, „podkreślenie jest traktowane tylko jako wyrażenie regularne dla poleceń związanych z BPG”
belacqua
0

Łatwa odpowiedź jest taka, że ​​dla mapowania jeden na jeden z IOS na NX-OS wygląda to tak:

IOS : show run | inc (interface Vlan)|(ip address)
NX-OS : show run | inc 'interface Vlan|ip address'

Pamiętaj, że ma to większy sens, gdy pominiesz dodatkowe pareny w oryginale:

show run | inc (interface Vlan|ip address)

Kluczem w tym przykładzie jest to, że w przypadku NX-OS pareny są zastępowane znakami cudzysłowu.

Możesz także użyć podwójnych cudzysłowów, tj "" .

NX-OS jest oparty na Linuksie [1] i wykorzystuje silnik wyrażeń regularnych podobny do * nix. Polecenia są nieparzyste i obejmują między angielskim sformułowaniem a standardowymi idiomami wyrażeń regularnych.

Na przykład to, co byłoby egrep -vw bashie, wyglądałoby egrep ignore-case
w wierszu poleceń

show run | egrep ignore-case vpc
lub
show run | inc ignore-case vpc

Przykład szczegółowości (i siły) nowych funkcji wyrażenia regularnego:
show run | egrep ignore-case vpc | egrep invert-match ignore-case peer

Byłoby to równoważne z powłoką bash egrep -i vpc <input> | egrep -vi peer

Niemniej jednak jest tutaj znacznie więcej mocy i elastyczności niż w obecnym IOS.

Podstawowa dokumentacja Cisco znajduje się tutaj *, ale ?funkcja wiersza poleceń daje szybkie przypomnienia:

5k# show run | ?
  cut      Print selected parts of lines.
  diff     Show difference between current and previous invocation (creates temp files: remove them
           with 'diff-clean' command and dont use it on commands with big outputs, like 'show 
           tech'!) 
  egrep    Egrep - print lines matching a pattern
  grep     Grep - print lines matching a pattern
  head     Display first lines
  human    Output in human format
  last     Display last lines
  less     Filter for paging
  no-more  Turn-off pagination for command output
  section  Show lines that include the pattern as well as the subsequent lines that are more
           indented than matching line 
  sort     Stream Sorter
  tr       Translate, squeeze, and/or delete characters
  uniq     Discard all but one of successive identical lines
  vsh      The shell that understands cli command
  wc       Count words, lines, characters
  xml      Output in xml format (according to .xsd definitions)
  begin    Begin with the line that matches
  count    Count number of lines
  end      End with the line that matches
  exclude  Exclude lines that match
  include  Include lines that match

5k# show run | inc ?
  WORD         Search for the expression
  ignore-case  Ignore case difference when comparing strings
  line-exp     Print only lines where the match is a whole line

5k# show run | egrep ?
  WORD          Search for the expression
  count         Print a total count of matching lines only
  ignore-case   Ignore case difference when comparing strings
  invert-match  Print only lines that contain no matches for <expr>
  line-exp      Print only lines where the match is a whole line
  line-number   Print each match preceded by its line number
  next          Print <num> lines of context after every matching line
  prev          Print <num> lines of context before every matching line
  word-exp      Print only lines where the match is a complete word

Następnie przeszukaj „zabawne” (co jeszcze?), Aby znaleźć Podręcznik konfiguracji podstaw (który zawiera sekcję Wyrażenia regularne w rozdziale Zrozumienie interfejsu wiersza poleceń ).

Jajko wielkanocne? Numery rozdziałów są dwójkowe dla tego dokumentu.

Jeśli idziesz przez docs, można znaleźć wiele więcej * nix-like narzędzi wiersza polecenia, w tym cut, tri na 7K, seda niektóre inne gadżety.

Nie pomijaj też modyfikatorów previ nextdopasowań dla dopasowań „uwzględnij”.

Spowoduje to pobranie linii zawierających foo, a także trzy linie przed i dwie linie po dla kontekstu:
show run | inc foo prev 3 next 2

Belacqua
źródło