Comment - utiliser regex dans Nexus pour rechercher ceci | ou ça?

9

Si aggravant - je ne trouve pas de bonne documentation sur la façon d'utiliser la commande regex Nexus.

Donc, si mes interfaces ressemblent à ceci:

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 

Je veux exécuter quelque chose de similaire à:

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

Et la sortie à ressembler à (si c'était sur 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
la source

Réponses:

8

Vous pouvez faire un show run | egrep interface.Vlan|ip.address. Il récupère un peu plus d'informations, mais devrait fournir une sortie similaire à ce que vous voyez dans IOS. Je pense que grep pourrait également fonctionner, mais j'ai utilisé egrep et obtenu la sortie correcte.

Odéonevets
la source
Cela marche. Ainsi, egrep a eu lieu au show X | inc? Et le code recherche "interface" n'importe quoi "Vlan" OU "ip" n'importe quoi "adresse"? (sans les guillemets)
Pseudocyber
Je le crois. Vous pouvez accéder à la documentation d'egrep sur le 7k ici: cisco.com/en/US/docs/switches/datacenter/sw/6_x/nx-os/…
Odeonevets
5

Si vous recherchez simplement les adresses IP des interfaces Vlan, une meilleure façon peut être: show ip int br | grep -i vlan

Remarque: show ip int brdans NXOS affiche uniquement les interfaces de couche 3. Pour voir l'état de toutes les interfaces, utilisezshow int br

MISE À JOUR:

pour NXOS 4.0 (2) et versions antérieures: show run | grep -i face\ vlan|ip\ address

4.0 (3) et plus: show run | grep ignore-case face\ vlan|ip\ address

c'est aussi \comment échapper à l'espace avec regex. Lien pour l'expression régulière NXOS: http://www.cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/fundamentals/configuration/guide2/fun_3about_cli.html#wp1237003

emynd
la source
Je veux également avoir des informations sur les informations de sous-réseau, c'est pourquoi j'essayais de les retirer du "show run".
Pseudocyber
Je vois. Ensuite, essayez celui-ci pour la taille: show run | grep -i face\ vlan|ip\ address cela montrera également toutes les lignes dans la sortie qui contiennent soit "face vlan" soit "ip address"
emynd
Richard, merci, mais prenez une carotte sous le f après grep -i
Pseudocyber
aurait dû regarder plus profondément, mes excuses. Cette syntaxe devrait fonctionner sur NXOS 4.0 (2) et versions antérieures. Pour 4.0 (3) et plus, remplacez -ipar ignore_caseici le lien cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/…
emynd
Richard S, donc ça ressemble à ce que je pouvais faire sous iOS avec un | inc, je dois maintenant faire dans NXOS avec un | grep ignore-case bla bla bla. Et les espaces doivent être échappés, comme ce "\" sans guillemets? et je peux toujours utiliser plusieurs | pour l'utiliser comme logique ou?
Pseudocyber
5

Une syntaxe alternative impliquant des guillemets simples.

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

Dans NX-OS, l'analyse des arguments fonctionne un peu comme bash.

James Harr
la source
3

La documentation que j'ai vue dit que cela devrait fonctionner:

show run | inc interface_Vlan|ip_address

Bien que cela ne me semble pas sur un commutateur lame 4k. J'ai eu du succès avec

sh run | inc interface.Vlan|ip.address
Mike Marotta
la source
Cela ne fonctionne pas sur un 7K. 7K # sh run | inc interface_Vlan | ip_address 7K # sh run | inc interface_Vlan | ip_address - met une carotte sous le p. Pas de sortie du tout.
Pseudocyber
Je n'ai pas Nexus pour l'essayer mais vous pourriez essayer (interface.Vlan | ip.address). Le ^ sous le p sonne comme s'il interprétait le "| i" comme un deuxième tuyau.
Dave Noonan
@Pseudocyber: * caret :-)
Paul Gear
Par docs, et contrairement à IOS, "le trait de soulignement est uniquement traité comme une expression régulière pour les commandes liées aux BPG"
belacqua
0

La réponse simple est que, pour un mappage un à un entre IOS et NX-OS, cela ressemble à ceci:

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

Notez que cela a plus de sens lorsque vous omettez les parens supplémentaires dans l'original:

show run | inc (interface Vlan|ip address)

La clé de cet exemple est que pour NX-OS, les parens sont remplacés par des guillemets.

Vous pouvez également utiliser des guillemets doubles, par exemple "" .

NX-OS est basé sur Linux [1] et utilise un moteur d'expression régulière de type * nix. Les commandes sont bizarres entre le libellé anglais et les expressions idiomatiques standard.

Par exemple, ce qui serait egrep -vdans bash ressemblerait à egrep ignore-case
Sur la ligne de commande, cela ressemblerait à quelque chose comme

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

Un exemple de la verbosité (et de la force) des nouvelles fonctionnalités d'expression régulière:
show run | egrep ignore-case vpc | egrep invert-match ignore-case peer

Ce serait équivalent à un bash-shell egrep -i vpc <input> | egrep -vi peer

Néanmoins, il y a beaucoup plus de puissance et de flexibilité ici que dans l'IOS actuel.

La documentation de base de Cisco est ici *, mais votre ?fonction de ligne de commande vous donne des rappels rapides:

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

Vous devrez ensuite rechercher «amusant» (quoi d'autre?) Pour trouver le Guide de configuration des principes fondamentaux (qui contient la section Expression régulière dans le chapitre Comprendre l'interface de ligne de commande ).

Œuf de Pâques? Les numéros de chapitre sont en binaire pour ce document.

Si vous marchez dans la documentation, vous trouverez beaucoup plus * outils de ligne de commande-nix, y compris cut, tret sur le 7K, sedet quelques autres goodies.

N'oubliez pas non plus les modificateurs prevet nextpour les correspondances «include».

Cela récupérera les lignes contenant foo, ainsi que trois lignes avant et deux lignes après pour le contexte:
show run | inc foo prev 3 next 2

belacqua
la source