這是很多業(yè)內(nèi)人士都不知道的隱藏技巧俗慈。
這些在IOS中運(yùn)行的Linux命令可以提高你的工作效率,也可用于饲菜#酷或面試等環(huán)節(jié)闺阱,讓對(duì)方感到驚奇!這些命令已經(jīng)在CISCO設(shè)備上存在很長(zhǎng)時(shí)間了舵变,根據(jù)測(cè)試酣溃,1900這樣的老設(shè)備也支持。CISCO于2001年3月25日發(fā)布的一份文檔說明了從IOS v15.1M版本開始支持Cisoc IOS Shell的相關(guān)細(xì)節(jié):
https://www.cisco.com/c/en/us/td/docs/ios/netmgmt/configuration/guide/Convert/IOS_Shell/nm_ios_shell.html
因?yàn)楦甙姹镜腎OS(比如IOS XE)是基于Linux創(chuàng)建的纪隙,是Linux的一個(gè)進(jìn)程赊豌,所以支持Shell命令。
本文以VIRL的vIOS為例绵咱。
打入命令 show ip int b之后列出所有接口碘饼,可見有一大堆環(huán)回口,暫停在“--More--”等待用戶按任意鍵繼續(xù)顯示:
此時(shí)輸入正斜杠后跟關(guān)鍵字可以過濾之下的列表悲伶,比如從中找出地址為172.16.109.1的接口艾恼,會(huì)顯示該接口及其之下的所有列表:
在配置模式里打入命令:
shell processing full
這就啟動(dòng)了完整的shell進(jìn)程,現(xiàn)在我想顯示UP狀態(tài)的麸锉、除了172開頭和192開頭之外的所有接口钠绍,所以使用了3層過濾,include就做不到這點(diǎn):
show ip int b | grep up | grep -v 172 | grep -v 192
如果不想顯示環(huán)回口花沉,那很簡(jiǎn)單:
show ip int b | grep up | grep -v 172 | grep -v 192 | grep -v Loop
再比如顯示所有UP同時(shí)又配置了地址的端口(排除掉UP卻未配置地址的接口)柳爽,可以這樣打:
show ip int b | grep up | grep -v un
顯示出內(nèi)存中所有包含172.16.10的字符串:
show run | grep 172.16.10
顯示出包含1.1,卻排除環(huán)回口的字符串(相當(dāng)于同時(shí)使用include和exclude碱屁,傳統(tǒng)上做不到這點(diǎn)):
show run | grep 1.1 | grep -v Loop
uname -a 顯示路由器的相關(guān)信息磷脯,uname -s、-v娩脾、-r 顯示路由器的版本號(hào)争拐,這在腳本中很有用,uname -n,顯示路由器名字:
如果想要知道shell的更多功能架曹,打入幫助:
show shell functions
可見shell提供了大量的Linux命令隘冲,這可以大大提高我們的工作效率,比如head绑雄,tail等等:
通過管道展辞,把內(nèi)存中的配置寫入flash:
sh run > shrun.cfg
more shrun.cfg顯示文件(cat也可以,q退出):
高級(jí)應(yīng)用
上文所述的用法是打入命令shell processing full万牺,其實(shí)也可以僅針對(duì)當(dāng)前終端使用shell罗珍,以IOS XE為例,先關(guān)閉shell功能:
no shell processing full
再打入terminal shell:
現(xiàn)在該終端支持shell命令了脚粟。
如果退出終端覆旱,shell將被停止,這種僅對(duì)當(dāng)前終端啟用shell的方法可以減輕全局支持對(duì)設(shè)備造成的資源壓力核无。
忽略字符串的大小寫扣唱,本例是Face和face通用,這可以大大提高字符串的查找效率:
show run | grep -i Face
當(dāng)然可以用man查看各種命令的用法:
傳統(tǒng)上团南,我們可以這樣加行號(hào)顯示內(nèi)容:show run linenum:
但如果你這樣寫則不起作用:
show ip route linenum
因?yàn)閘inenum不能和show ip route配配合使用噪沙;但這樣輸入就支持帶行號(hào)顯示路由表了:
只看第帶70字樣的行:show ip route | nl | grep 70
只看第70行(正則表達(dá)式):show ip route | nl | grep ^70
這可以將大型路由表縮減到特定行。
按字母順序輸出:
show ip int b |sort
show run | sort | more
再比如吐根,看有哪些vlan:
show run | grep vlan
我已經(jīng)例舉了一些正歼,剩下的就是舉一反三,看你的想象力了拷橘。