Gewusst wie - Verwenden Sie Regex in Nexus, um danach zu suchen oder das?


9

So erschwerend - ich kann keine gute Dokumentation zur Verwendung des Nexus-Regex-Befehls finden.

Also, wenn meine Schnittstellen so aussehen:

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 

Ich möchte etwas Ähnliches ausführen wie:

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

Und die Ausgabe sieht ähnlich aus (wenn dies unter IOS wäre):

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.

Antworten:


8

Sie können eine tun show run | egrep interface.Vlan|ip.address. Es enthält zwar etwas mehr Informationen, sollte jedoch eine ähnliche Ausgabe liefern wie in IOS. Ich denke, grep könnte auch funktionieren, aber ich habe egrep verwendet und die richtige Ausgabe erhalten.


Das funktioniert. Also hat egrep die Show X | ersetzt inc? Und der Code sucht nach "Schnittstelle" irgendetwas "Vlan" ODER "IP" irgendetwas "Adresse"? (ohne die Anführungszeichen)
Pseudocyber

Ich glaube schon. Sie können auf die Dokumentation für egrep auf dem 7k hier zugreifen
Odeonevets

5

Wenn Sie nur nach den IP-Adressen der Vlan-Schnittstellen suchen, ist dies möglicherweise besser: show ip int br | grep -i vlan

Hinweis: show ip int brIn NXOS werden nur Layer 3-Schnittstellen angezeigt. Um den Status aller Schnittstellen anzuzeigen, verwenden Sieshow int br

AKTUALISIEREN:

für NXOS 4.0 (2) und früher: show run | grep -i face\ vlan|ip\ address

4.0 (3) und höher: show run | grep ignore-case face\ vlan|ip\ address

auch das \ist, wie man dem Raum mit Regex entkommt. Link für die NXOS-Regex: http://www.cisco.com/de/US/docs/switches/datacenter/sw/4_0/nx-os/fundamentals/configuration/guide2/fun_3about_cli.html#wp1237003


Ich möchte auch Informationen zu den Subnetzinformationen haben, deshalb habe ich versucht, sie aus dem "Show Run" herauszuholen.
Pseudocyber

Aha. Dann probieren Sie diese für die Größe an: show run | grep -i face\ vlan|ip\ address Dies zeigt auch alle Zeilen in der Ausgabe, die entweder "face vlan" oder "ip address" enthalten
emynd

Richard, danke, aber hol dir eine Karotte unter dem f nach grep -i
Pseudocyber

hätte tiefer schauen sollen, entschuldige ich mich. Diese Syntax sollte unter NXOS 4.0 (2) und früher funktionieren. Für 4.0 (3) und höher ersetzen Sie -idurch ignore_casehier den Link cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/…
emynd

Richard S, also klingt es so, wie ich es früher in ios mit einem | gemacht habe inc, muss ich jetzt in NXOS mit einem | machen grep ignore-case bla bla bla. Und Leerzeichen müssen wie dieses "\" ohne Anführungszeichen maskiert werden? und ich kann immer noch mehrere | verwenden, um sie als logisch zu verwenden oder?
Pseudocyber

5

Eine alternative Syntax mit einfachen Anführungszeichen.

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

In NX-OS funktioniert das Parsen von Argumenten ähnlich wie Bash.


3

Die Dokumentation, die ich gesehen habe, besagt, dass dies funktionieren sollte:

show run | inc interface_Vlan|ip_address

Obwohl es mir auf einem 4k Blade Switch nicht scheint. Ich hatte Erfolg mit

sh run | inc interface.Vlan|ip.address

Das funktioniert bei einem 7K nicht. 7K # sh run | inc interface_Vlan | ip_address 7K # sh run | inc interface_Vlan | ip_address - legt eine Karotte unter das p. Überhaupt keine Ausgabe.
Pseudocyber

Ich habe kein Nexus zum Anprobieren, aber Sie könnten es versuchen (interface.Vlan | ip.address). Das ^ unter dem p klingt so, als würde es das "| i" als zweite Pipe interpretieren.
Dave Noonan

@ Pseudocyber: * caret :-)
Paul Gear

Per docs und im Gegensatz zu IOS wird "der Unterstrich nur als regulärer Ausdruck für BPG-bezogene Befehle behandelt"
belacqua

0

Die einfache Antwort lautet: Für eine Eins-zu-Eins-Zuordnung von IOS zu NX-OS sieht es folgendermaßen aus:

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

Beachten Sie, dass dies sinnvoller ist, wenn Sie die zusätzlichen Parens im Original weglassen:

show run | inc (interface Vlan|ip address)

Der Schlüssel in diesem Beispiel ist, dass bei NX-OS die Parens durch Anführungszeichen ersetzt werden.

Sie können auch doppelte Anführungszeichen verwenden, z "" .

NX-OS basiert auf Linux [1] und verwendet eine * nix-ähnliche Engine für reguläre Ausdrücke. Die Befehle sind ungerade und bestehen aus englischen Formulierungen und Standard-Regex-Redewendungen.

Zum Beispiel würde das, was egrep -vin Bash wäre, so aussehen. egrep ignore-case
In der Befehlszeile würde dies ungefähr so ​​aussehen

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

Ein Beispiel für die Ausführlichkeit (und Stärke) der neuen Regex-Funktionen:
show run | egrep ignore-case vpc | egrep invert-match ignore-case peer

Dies wäre gleichbedeutend mit einer Bash-Shell egrep -i vpc <input> | egrep -vi peer

Trotzdem gibt es hier erheblich mehr Leistung und Flexibilität als im aktuellen IOS.

Die grundlegende Cisco-Dokumentation finden Sie hier *, aber Ihre Befehlszeilenfunktion ?erinnert Sie schnell daran:

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

Anschließend möchten Sie nach "Spaß" suchen (was noch?), Um das Handbuch zur grundlegenden Konfiguration zu finden (das den Abschnitt "Regulärer Ausdruck" im Kapitel " Grundlegendes zur Befehlszeilenschnittstelle" enthält ).

Osterei? Die Kapitelnummern sind für dieses Dokument binär.

Wenn Sie durch die docs gehen, werden Sie viel mehr * nix-wie Kommandozeilen - Tools finden, einschließlich cut, trund auf dem 7K, sedund einige andere Leckereien.

Übersehen Sie auch nicht die Modifikatoren prevund nextfür "Include" -Matches.

Dadurch werden Zeilen mit foo sowie drei Zeilen vor und zwei Zeilen nach dem Kontext erfasst:
show run | inc foo prev 3 next 2

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.