在CIOSCO IOS里執(zhí)行Linux Shell命令

這是很多業(yè)內人士都不知道的隱藏技巧。
這些在IOS中運行的Linux命令可以提高你的工作效率,也可用于??峄蛎嬖嚨拳h(huán)節(jié),讓對方感到驚奇!這些命令已經(jīng)在CISCO設備上存在很長時間了,根據(jù)測試,1900這樣的老設備也支持。CISCO于2001年3月25日發(fā)布的一份文檔說明了從IOS v15.1M版本開始支持Cisoc IOS Shell的相關細節(jié):
https://www.cisco.com/c/en/us/td/docs/ios/netmgmt/configuration/guide/Convert/IOS_Shell/nm_ios_shell.html

01.png

因為高版本的IOS(比如IOS XE)是基于Linux創(chuàng)建的,是Linux的一個進程,所以支持Shell命令。

本文以VIRL的vIOS為例。
打入命令 show ip int b之后列出所有接口,可見有一大堆環(huán)回口,暫停在“--More--”等待用戶按任意鍵繼續(xù)顯示:


01.png

此時輸入正斜杠后跟關鍵字可以過濾之下的列表,比如從中找出地址為172.16.109.1的接口,會顯示該接口及其之下的所有列表:

01.png

在配置模式里打入命令:
shell processing full
這就啟動了完整的shell進程,現(xiàn)在我想顯示UP狀態(tài)的、除了172開頭和192開頭之外的所有接口,所以使用了3層過濾,include就做不到這點:
show ip int b | grep up | grep -v 172 | grep -v 192
01.png

如果不想顯示環(huán)回口,那很簡單:
show ip int b | grep up | grep -v 172 | grep -v 192 | grep -v Loop
01.png

再比如顯示所有UP同時又配置了地址的端口(排除掉UP卻未配置地址的接口),可以這樣打:
show ip int b | grep up | grep -v un

顯示出內存中所有包含172.16.10的字符串:
show run | grep 172.16.10


01.png

顯示出包含1.1,卻排除環(huán)回口的字符串(相當于同時使用include和exclude,傳統(tǒng)上做不到這點):
show run | grep 1.1 | grep -v Loop


01.png

uname -a 顯示路由器的相關信息,uname -s、-v、-r 顯示路由器的版本號,這在腳本中很有用,uname -n,顯示路由器名字:
01.png

如果想要知道shell的更多功能,打入幫助:

show shell functions
可見shell提供了大量的Linux命令,這可以大大提高我們的工作效率,比如head,tail等等:


01.png

通過管道,把內存中的配置寫入flash:
sh run > shrun.cfg
01.png

more shrun.cfg顯示文件(cat也可以,q退出):
01.png

高級應用
上文所述的用法是打入命令shell processing full,其實也可以僅針對當前終端使用shell,以IOS XE為例,先關閉shell功能:
no shell processing full
再打入terminal shell:


01.png

現(xiàn)在該終端支持shell命令了。
如果退出終端,shell將被停止,這種僅對當前終端啟用shell的方法可以減輕全局支持對設備造成的資源壓力。

忽略字符串的大小寫,本例是Face和face通用,這可以大大提高字符串的查找效率:
show run | grep -i Face


01.png

當然可以用man查看各種命令的用法:


01.png

傳統(tǒng)上,我們可以這樣加行號顯示內容:show run linenum:
01.png

但如果你這樣寫則不起作用:

show ip route linenum
因為linenum不能和show ip route配配合使用;但這樣輸入就支持帶行號顯示路由表了:

show ip route | nl |more
01.png

只看第帶70字樣的行:show ip route | nl | grep 70
只看第70行(正則表達式):show ip route | nl | grep ^70
這可以將大型路由表縮減到特定行。
按字母順序輸出:
show ip int b |sort
show run | sort | more

再比如,看有哪些vlan:
show run | grep vlan

我已經(jīng)例舉了一些,剩下的就是舉一反三,看你的想象力了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容