思科、华为路由器的 shell 是如何工作的?
在很多网关设备上,我们通过 ssh 或者 telnet 连接到设备上进行调试,不同厂家不同设备都会定制有不同的 shell 命令,比如华为的 WAP shell,一开始进入设备使用的是 WAP 的 shell,然而这个 shell 都是定制的,如果想要使用更多的命令则需要进入到 linux 之下才能使用 linux的命令,然而在 linux 下面也是不能使用 WAP 的命令。很想知道像这种特别定制的 shell 是如何工作的,怎么才能知道哪些命令实际上都是如何跟 linux 底层工作的。谢谢!
你可以理解為,這些廠家提供了一個 新的介面 ;你也可以認為,這些廠家提供了一個 中間件。
簡單來講,你所能操作的層面,其實不是linux,而是一個操作層,例如網頁的圖形介面。如果廠商夠懶,或夠追求高效,那麼久沒有這個圖形介面,轉而丟給你一個命令列介面。
在圖形介面點擊,其實是網頁執行一個中間件腳本,這個腳本才是真正工作的東西,他會改linux系統下的內容,比如ip,路由。
如果沒有圖形介面,那就是你在命令列介面執行cmd -A -B -C,這個命令列介面其實還是去呼叫中間件。
例如display interface e0/0,其實沒準是執行的ifconfig eth0;ethtool eth0;再把這些資料整合到一起輸出給你。
我以前的公司也做過類似的東西。你可以看一下:vyatta。
Cisco IOS: https://learningnetwork.cisco.com/thread/47297
Huawei VRP的沒找到- -其實網路上關於華為VRP的資料也不多,
Linux系統提供給使用者的最重要的系統程式是Shell命令語言解釋程式。它不
屬於核心部分,而是在核心之外,以用戶態方式運作。其基本功能為解釋並
執行用戶打入的各種指令,實現用戶與Linux核心的介面。系統初啟動後,核
心為每個終端使用者建立一個行程去執行Shell解釋程式。它的執行過程基本
上依下列步驟: (1)讀取使用者由鍵盤輸入的命令列。 (2)分析指令,以命令
名稱作為檔名,並將其它參數改造為系統呼叫execve( )內部處理所要求的
形式。 (3)終端進程呼叫fork( )建立一個子程序。 (4)終端進程本身用系
統調用wait4( )來等待子程序完成(如果是後台指令,則不等待)。當子進
程運行時呼叫execve( ),子程序根據檔名(即指令名)到目錄中找有
關檔案(這是命令解釋程式構成的檔案),將它調入內存,執行這個程式(
解釋這條指令)。 (5)如果指令末端有&號(後台指令符號),則終端機程序
不用系統呼叫wait4( )等待,立即發出提示符,讓使用者輸入下一個指令,轉⑴
。如果命令末尾沒有&號,則終端進程要一直等待,當子進程(即運行命令
的進程)完成處理後終止,並向父進程(終端進程)報告,此時終端進程醒來
,在做必要的判別等工作後,終端進程發提示符,讓使用者輸入新的指令,重
復上述處理過程。
http://www.cnblogs.com/wuyuegb2312/p/3399566.html