วิธี - ใช้ regex ใน Nexus เพื่อค้นหา | หรือว่า


9

ทำให้รุนแรงขึ้น - ฉันไม่สามารถหาเอกสารที่ดีเกี่ยวกับวิธีการใช้คำสั่ง Nexus regex

ดังนั้นหากส่วนต่อประสานของฉันมีลักษณะดังนี้:

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 

ฉันต้องการเรียกใช้บางสิ่งที่คล้ายกับ:

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

และผลลัพธ์ที่ออกมาคล้ายกับ (ถ้าเป็นใน 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.

คำตอบ:


8

show run | egrep interface.Vlan|ip.addressคุณสามารถทำ มันจับข้อมูลอีกเล็กน้อย แต่ควรให้ผลลัพธ์ที่คล้ายกับสิ่งที่คุณเห็นใน IOS ฉันคิดว่า grep อาจทำงานได้เช่นกัน แต่ฉันใช้ egrep และได้ผลลัพธ์ที่ถูกต้อง


วิธีนี้ใช้ได้ผล ดังนั้น egrep จึงเข้ามาแทนที่การแสดง X | inc และโค้ดจะมองหาที่อยู่ "อินเตอร์เฟส" อะไรก็ได้ "Vlan" หรือ "ip" อะไรก็ได้ "ที่อยู่"? (ไม่มีเครื่องหมายคำพูด)
Pseudocyber

ฉันเชื่ออย่างนั้น คุณสามารถเข้าถึงเอกสารสำหรับ egrep ได้ที่ 7k ที่นี่: cisco.com/en/US/docs/switches/datacenter/sw/6_x/nx-os/…
Odeonevets

5

หากคุณกำลังมองหาที่อยู่ IP ของอินเทอร์เฟซ Vlan วิธีที่ดีกว่าอาจเป็น: show ip int br | grep -i vlan

หมายเหตุ: show ip int brใน NXOS แสดงเฉพาะเลเยอร์ 3 อินเตอร์เฟส หากต้องการดูสถานะของอินเตอร์เฟสทั้งหมดให้ใช้show int br

UPDATE:

สำหรับ NXOS 4.0 (2) และรุ่นก่อนหน้า: show run | grep -i face\ vlan|ip\ address

4.0 (3) ขึ้นไป: show run | grep ignore-case face\ vlan|ip\ address

ยัง\เป็นวิธีการหลบหนีพื้นที่ด้วย regex ลิงก์สำหรับ NXOS regex: http://www.cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/fundamentals/configuration/guide2/fun_3about_cli.html#wp1237003


ฉันต้องการมีข้อมูลเกี่ยวกับข้อมูลซับเน็ตด้วยเหตุนี้ฉันจึงพยายามดึงข้อมูลออกจาก "show run"
Pseudocyber

ฉันเห็น. จากนั้นลองใช้ขนาดshow run | grep -i face\ vlan|ip\ address นี้เพื่อแสดงขนาดนี้จะแสดงบรรทัดทั้งหมดในเอาต์พุตที่มี "face vlan" หรือ "ที่อยู่ ip"
emynd

Richard ขอบคุณ แต่รับแครอทภายใต้ f หลังจาก grep -i
Pseudocyber

ควรดูลึกลงไปขอโทษด้วย ไวยากรณ์นั้นควรทำงานกับ NXOS 4.0 (2) และรุ่นก่อนหน้า สำหรับ 4.0 (3) ขึ้นไปแทนที่-iด้วยignore_caseลิงค์cisco.com/en/US/docs/switches/datacenter/sw/4_0/nx-os/…
emynd

Richard S ดังนั้นดูเหมือนว่าฉันเคยทำอะไรใน ios ด้วย | ตอนนี้ฉันต้องทำใน NXOS ด้วย | grep ไม่สนใจเคส blah blah blah และต้องเว้นช่องว่างเช่น "\" โดยไม่มีเครื่องหมายอัญประกาศใช่ไหม และฉันยังสามารถใช้หลาย | เพื่อใช้เป็นตรรกะหรือของ?
Pseudocyber

5

ไวยากรณ์ทางเลือกที่เกี่ยวข้องกับเครื่องหมายคำพูดเดี่ยว

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

ใน NX-OS การแยกวิเคราะห์อาร์กิวเมนต์ใช้งานได้ดีเหมือนการทุบตี


3

เอกสารที่ฉันได้เห็นบอกว่านี่ควรจะทำงาน:

show run | inc interface_Vlan|ip_address

แม้ว่ามันจะไม่ดูเหมือนฉันสำหรับสวิตช์เบลดขนาด 4k ฉันประสบความสำเร็จด้วย

sh run | inc interface.Vlan|ip.address

ไม่ทำงานบน 7K 7K # sh run | inc interface_Vlan | ip_address 7K # sh run | inc interface_Vlan | ip_address - วางแครอทไว้ใต้ p ไม่มีเอาต์พุตเลย
Pseudocyber

ฉันไม่มี Nexus ให้ลอง แต่คุณอาจลอง (interface.Vlan | ip.address) ^ ภายใต้ p ดูเหมือนว่าเป็นการตีความ "| i" เป็นไพพ์ที่สอง
Dave Noonan

@Peudocyber: * caret :-)
พอลเกียร์

ต่อเอกสารและไม่เหมือน IOS "เครื่องหมายขีดล่างจะถือว่าเป็นนิพจน์ปกติสำหรับคำสั่งที่เกี่ยวข้องกับ BPG เท่านั้น"
belacqua

0

คำตอบง่ายๆคือสำหรับการทำแผนที่แบบหนึ่งต่อหนึ่งจาก IOS กับ NX-OS ดูเหมือนว่า:

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

โปรดทราบว่าการดำเนินการนี้เหมาะสมกว่าเมื่อคุณไม่ต้องใช้การเสริมพิเศษในต้นฉบับ:

show run | inc (interface Vlan|ip address)

กุญแจสำคัญในตัวอย่างนี้คือสำหรับ NX-OS parens จะถูกแทนที่ด้วยเครื่องหมายคำพูด

"" นอกจากนี้คุณยังสามารถใช้คำพูดสองคือ

NX-OS นั้นใช้ Linux [1]และใช้เอ็นจิ้นนิพจน์ปกติเหมือน * nix คำสั่งนั้นมีลักษณะคี่ประกอบด้วยถ้อยคำภาษาอังกฤษและสำนวนมาตรฐาน regex

ตัวอย่างเช่นสิ่งที่จะเป็นegrep -vทุบตีจะมีลักษณะเหมือนegrep ignore-case
ในบรรทัดคำสั่งนี้จะมีลักษณะเช่น

show run | egrep ignore-case vpc
หรือ
show run | inc ignore-case vpc

ตัวอย่างของการใช้คำฟุ่มเฟื่อย (และความแข็งแรง) ของคุณสมบัติ regex ใหม่:
show run | egrep ignore-case vpc | egrep invert-match ignore-case peer

นี่จะเทียบเท่ากับ bash-shell egrep -i vpc <input> | egrep -vi peer

อย่างไรก็ตามมีพลังและความยืดหยุ่นมากกว่าใน IOS ปัจจุบัน

เอกสารพื้นฐานของ Cisco อยู่ที่นี่ * แต่?คุณสมบัติบรรทัดคำสั่งของคุณจะช่วยเตือนคุณได้อย่างรวดเร็ว:

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

จากนั้นคุณจะต้องการค้นหา "สนุก" (มีอะไรอีก) เพื่อค้นหาคำแนะนำในการกำหนดค่าพื้นฐาน (ซึ่งมีส่วนนิพจน์ปกติในบทการทำความเข้าใจกับส่วนต่อประสานบรรทัดคำสั่ง )

ไข่อีสเตอร์? หมายเลขบทเป็นเลขฐานสองสำหรับเอกสารนี้

ถ้าคุณเดินผ่านเอกสารคุณจะพบมาก * เพิ่มเติมระวังเหมือนเครื่องมือบรรทัดคำสั่งรวมทั้งcut, trและใน 7K, sedและบางส่วนสินค้าอื่น ๆ

นอกจากนี้อย่ามองข้ามprevและnextปรับเปลี่ยนสำหรับการแข่งขัน 'รวม'

วิธีนี้จะดึงบรรทัดที่มี foo รวมถึงสามบรรทัดก่อนและสองบรรทัดหลังสำหรับบริบท:
show run | inc foo prev 3 next 2

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.