Cómo usar regex en Nexus para buscar esto | ¿o eso?

9

Tan agravante: no puedo encontrar buena documentación sobre cómo usar el comando Nexus regex.

Entonces, si mis interfaces se ven así:

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 

Quiero ejecutar algo similar a:

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

Y la salida para parecerse a (si esto fuera en 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
fuente

Respuestas:

8

Puedes hacer un show run | egrep interface.Vlan|ip.address. Captura un poco más de información, pero debería proporcionar una salida similar a la que ves en iOS. Creo que grep podría funcionar también, pero usé egrep y obtuve el resultado correcto.

Odeonevets
fuente
Esto funciona. Entonces, egrep ha tenido lugar del show X | C ª ? ¿Y el código busca "interfaz" cualquier cosa "Vlan" O "ip" cualquier "dirección"? (sin las comillas)
Pseudocyber
Eso creo. Puede acceder a la documentación de egrep en el 7k aquí: cisco.com/en/US/docs/switches/datacenter/sw/6_x/nx-os/…
Odeonevets
5

Si solo está buscando las direcciones IP de las interfaces de Vlan, una mejor manera puede ser: show ip int br | grep -i vlan

Nota: show ip int bren NXOS solo se muestran las interfaces de capa 3. Para ver el estado de todas las interfaces useshow int br

ACTUALIZAR:

para NXOS 4.0 (2) y versiones anteriores: show run | grep -i face\ vlan|ip\ address

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

También \es cómo escapar del espacio con expresiones regulares. Enlace para la expresión regular de NXOS: http://www.cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/fundamentals/configuration/guide2/fun_3about_cli.html#wp1237003

emynd
fuente
También quiero tener información sobre la información de subred, por eso estaba tratando de sacarla del "show run".
Pseudocyber
Veo. Luego pruebe este tamaño: show run | grep -i face\ vlan|ip\ address esto también mostrará todas las líneas en la salida que contienen "face vlan" o "ip address"
emynd
Richard, gracias, pero consigue una zanahoria debajo de la f después de grep -i
Pseudocyber
Debería haber mirado más profundo, mis disculpas. Esa sintaxis debería funcionar en NXOS 4.0 (2) y versiones anteriores. Para 4.0 (3) en adelante, reemplace -icon ignore_caseel siguiente enlace: cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/…
emynd
Richard S, así que suena como lo que solía hacer en iOS con un | inc, ahora necesito hacer en NXOS con un | grep ignore-case bla, bla, bla. ¿Y los espacios deben escaparse, como este "\" sin comillas? y todavía puedo usar múltiples | 's para usar como lógico o?
Pseudocyber
5

Una sintaxis alternativa que implica comillas simples.

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

En NX-OS, el análisis de argumentos funciona de manera muy similar a bash.

James Harr
fuente
3

La documentación que he visto dice que esto debería funcionar:

show run | inc interface_Vlan|ip_address

Aunque no lo parece para mí en un interruptor de hoja 4k. Tuve éxito con

sh run | inc interface.Vlan|ip.address
Mike Marotta
fuente
Eso no funciona en un 7K. 7K # sh corre | inc interface_Vlan | ip_address 7K # sh ejecutar | inc interface_Vlan | ip_address - pone una zanahoria debajo de la p. No hay salida en absoluto.
Pseudocyber
No tengo Nexus para probarlo, pero puede intentarlo (interface.Vlan | ip.address). La ^ debajo de la p suena como si estuviera interpretando la "| i" como una segunda tubería.
Dave Noonan
@Pseudocyber: * caret :-)
Paul Gear
Por documentos, y a diferencia de IOS, "el guión bajo solo se trata como una expresión regular para los comandos relacionados con BPG"
belacqua
0

La respuesta fácil es que, para un mapeo uno a uno de IOS a NX-OS, se ve así:

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

Tenga en cuenta que esto tiene más sentido cuando omite los parens adicionales en el original:

show run | inc (interface Vlan|ip address)

La clave en este ejemplo es que para NX-OS, los parens son reemplazados por comillas.

También podría usar comillas dobles, es decir "" .

NX-OS está basado en Linux [1] , y utiliza un motor de expresión regular similar a * nix. Los comandos son extraños y se componen de palabras en inglés y expresiones idiomáticas estándar.

Por ejemplo, lo que estaría egrep -ven bash se vería egrep ignore-case
en la línea de comando, esto se vería algo así

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

Un ejemplo de la verbosidad (y fuerza) de las nuevas características de expresiones regulares:
show run | egrep ignore-case vpc | egrep invert-match ignore-case peer

Esto sería equivalente a un bash-shell egrep -i vpc <input> | egrep -vi peer

Sin embargo, aquí hay considerablemente más potencia y flexibilidad que en el IOS actual.

La documentación básica de Cisco está aquí *, pero su ?función de línea de comandos le ofrece recordatorios rápidos:

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

Entonces querrá buscar "diversión" (¿qué más?) Para encontrar la Guía de configuración de fundamentos (que contiene la sección Expresión regular en el capítulo Comprensión de la interfaz de línea de comandos ).

¿Huevo de Pascua? Los números de los capítulos están en binario para este documento.

Si usted camina a través de los documentos, encontrará mucho más unix, herramientas de línea de comandos, entre ellos cut, try en la 7K, sedy algunas otras golosinas.

Además, no pase por alto los modificadores prevy nextpara las coincidencias 'incluir'.

Esto tomará líneas que contienen foo, así como tres líneas antes y dos líneas después para el contexto:
show run | inc foo prev 3 next 2

belacqua
fuente