cisco交換機ssh配置命令,思科ssh配置命令

隨着這幾年網絡運維自動化技術的大熱,思科的CCIE EI考試中已經納入了有關Python的筆試和實驗試題。去年我寫了一篇《網絡工程師的Python之路 — 思科IOS-XE內置Python及其內置CLI模塊》的專欄文章,向大家介紹了怎麼在思科IOS-XE設備中使用其內置的Python以及思科自家造的第三方模塊:CLI。

雖然由於一些政策性的原因,思科在國內的江湖地位大不如前,但是在我幾千名讀者中依然不乏有在日常工作中和思科設備打交道,以及有想法準備出國闖蕩準備重拾思科技術的,還有正在準備CCIE EI考試的。今天就帶大家回顧一下目前在思科接入層設備里比較主流的IOS-XE操作系統,以及順便介紹一個大多數曾經或者正在和思科設備打交道的讀者們不知道的乾貨:如何在IOS-XE設備上啟用並輸入Linux命令,幫助我們配合Python更好的完成平時一些運維自動化需求。


眾所周知,作為思科大名鼎鼎的IOS操作系統的繼承者,思科的IOS-XE操作系統誕生至今已經有13年的歷史了。IOS-XE最早是搭配在思科ASR 1000系列的路由器和Catalyst 3850系列的交換機上發佈的,後續的Catalyst 9200, 9300, 9400, 9500,9600交換機以及ISR 1000, ISR 4000, ASR 920等系列的路由器都沿用了IOS-XE這款操作系統。

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

搭載IOS-XE操作系統的思科Catalyst 9000系列交換機家族

IOS-XE(下面簡稱XE)和IOS最大的區別有如下幾點:

  1. XE採用的是一種分佈式的軟件架構,這和IOS操作系統完全不同。在IOS年代,IOS process是整個網絡設備最最核心的進程,IOS process總覽大權掌控着一切,一旦IOS process出問題,那整個設備的操作系統就此癱瘓。而在XE中,所有重要的系統進程都被隔離開來,IOS process只是XE里12個重要進程中的一個。舉個例子,假如Logger這個進程出了問題,那它不會影響到IOS process。另外XE還支持在一個RP上同時運行兩個IOS process。
  2. IOS誕生於上世紀80年代初,那時甭說Netconf,Restconf這些API,就連Python這個語言都還沒誕生,什麼JSON,XML, YAML, YANG之類的更是天方夜譚,更沒有什麼思科自己研發的DNA, SDWAN,Streaming Telemetry,Devnet toolkit等等,所以IOS設備對Netdevops的支持是相當差的,XE則解決了IOS的這一痛點(好在思科的IOS設備確實老而彌堅,經典耐用,至今在現網中依然到處能看到使用IOS作為操作系統的思科設備的身影,這點從ntc-templates,netmiko,nornir,napalm等一些主流的Netdevops第三方庫和工具對IOS的支持程度上就知道了)。
  3. 最重要也是本文要討論的一點:XE是用Linux開發的也就是說在XE設備上我們是能直接輸入一些常見的Linux命令的來完成一些我們需要通過Python才能完成的任務,甚至還能直接在XE上做一些簡單的shell編程!知道XE這個特點的用戶有,但是因為Linux shell在XE里不是默認開啟的,並且思科本身也沒有大肆宣傳過(相關的中文資料就更是稀缺了),因此真正上手用過這一特性,知道它”香」的國內網工很少很少。註:Linux Shell在IOS里也有,但是是從版本15才被引入的,老版里是沒有的。

本文就來介紹一下如何在XE設備里啟用Linux Shell,來看如何通過一些常見的linux命令以及shell編程來給我們平日的網絡運維自動化增光添彩。


在IOS-XE上啟用Linux Shell

前面講了,XE默認狀態下Linux Shell是關閉的,要啟用它很簡單,這裡我以一台思科Catalyst 9300交換機為例,進入特權模式後,直接輸入命令terminal shell即可:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

terminal shell不是永久開啟的,每次SSH登陸設備開啟一個新的SSH會話後必須重新手動開啟,如果你想永久開啟的話需要做如下配置:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

注意:永久開啟shell比較占內存和CPU,請謹慎使用。

使用man手冊命令

敢問當年入坑Linux的網工誰沒用過man來查閱和學習各種linux命令及其參數?比如這裡我們要在XE設備上通過man命令來查詢grep命令相關的信息和參數,直接man grep就行了:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

使用grep做過濾

如果你問我最有代表性的linux命令是什麼?那grep肯定榜上有名。玩過思科設備的都知道,思科最常見的過濾命令就是管道符後面配上include, exclude, begin, section等基於正則表達式的命令,但是你試過在思科設備上用grep來做過濾嗎?

首先我們來看一下在沒有開啟linux shell情況下,使用grep會怎樣:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

不出意外,默認狀態下我們是用不了grep的,接下來看下在開啟Linux Shell後怎麼樣:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

如果你是Linux老手的話,肯定知道grep能實現很多include, exclude, begin, section做不到的功能,比如在一台路由器上通過grep給出多個條件來過濾OSPF的路由前綴:

R1#show ip route | grep (150) | grep (10003)     
O        150.1.2.2 [110/10003] via 155.1.146.4, 15:51:41, GigabitEthernet1.146
O        150.1.3.3 [110/10003] via 155.1.146.4, 15:51:41, GigabitEthernet1.146
O IA     150.1.22.22 [110/10003] via 155.1.146.4, 1d11h, GigabitEthernet1.14

R1#show ip route | grep (150) | grep -v (10003)
      150.1.0.0/32 is subnetted, 11 subnets
C        150.1.1.1 is directly connected, Loopback0
O        150.1.4.4 [110/2] via 155.1.146.4, 15:51:57, GigabitEthernet1.146
O        150.1.5.5 [110/3] via 155.1.146.4, 15:51:57, GigabitEthernet1.146
O        150.1.6.6 [110/2] via 155.1.146.6, 1d12h, GigabitEthernet1.146
O IA     150.1.7.7 [110/3] via 155.1.146.6, 1d12h, GigabitEthernet1.146
O IA     150.1.8.8 [110/4] via 155.1.146.4, 15:52:07, GigabitEthernet1.146
O IA     150.1.9.9 [110/4] via 155.1.146.6, 1d12h, GigabitEthernet1.146
O IA     150.1.10.10 [110/5] via 155.1.146.4, 15:52:07, GigabitEthernet1.146

使用nl給回顯內容添加行數

當年考過CCIE的思科老手們都知道show run這個命令後面可以接一個linenum來查看回顯內容總共有多少行,以防止被考官TR,如下:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

不過遺憾的是,linenum這個命令只能接在show run後面,在其他常見的show ip int brief, show version, show logging等命令後面你是享受不了這個「福利」的:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

現在我們開啟了Linux Shell後,可以用nl(number of line的簡寫)來實現這個目的:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令
網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

不要小看這個功能,它能配合grep來完成一些我們需要通過Python才能實現的功能,比如說以上圖的show version的回顯內容為例,如果我們只想根據排數指定過濾出其中的某一排內容,這個時候你用傳統的include, exclude, begin, section等過濾方法就很難做到,比如說我們想過濾出show version回顯內容的第128排的內容,可以這麼操作:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

使用uname來快速查看設備的型號

uname這個常見的Linux命令是幹什麼的大家都懂,在開啟了Linux Shell的XE中,uname只會返回一個內容,即交換機的設備型號,通常來說,要查看思科設備的PID要輸入show inventory這個命令,但是show inventory命令的回顯內容很多,我們用Python的話還要配合re來做一些過濾,而使用uname的話就省事多了,因為它只給你返回一個值,方便我們快速通過Python腳本獲取設備的型號:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

使用WC來統計回顯內容有多少位元組,多少個換行符,多少個字母,多少個詞彙等等等等

這裡就不一一解釋了,自己配合man來理解:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

Head和Tail命令來過濾回顯內容排數

比如這裡我只想看到show run回顯內容的前10排和最後10排:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

shell編程

既然是Shell,那是不是可以直接編程?當然可以。

對shell編程熟悉的一看就懂,不熟的但是有Python功底的也應該都懂:

創建變量、變量賦值、調用變量:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

for循環:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

函數:

網絡工程師的Python之路——思科IOS-XE設備巧用Linux命令

怎麼樣?強不強大?是不是可以替代部分Python功能了?

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/234137.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-11 17:54
下一篇 2024-12-11 17:54

相關推薦

發表回復

登錄後才能評論