1,介紹
????????clish是一個類思科命令行補全與執行程序,它可以幫助程序員在nix操作系統上實現功能導引、命令補全、命令執行的程序。支持?,help, Tab按鍵。本文基于klish-2.2.0介紹編譯和測試。
2,klish的編譯
??????? 需要安裝的庫:
sudo yum install expat-devel
sudo yum install libxml2-devel? :支持xml文件
?編譯:
?????? ???? ./configure? [--prefix = /usr/local/]
??????????? make && make install
交叉編譯:
?????????./configure --host=mipsel-linux CC=mipsel-linux-gcc?
????????:編譯器找不到的話需要寫絕對路徑
?3,klish的啟動
?我是默認安裝在/usr/local下的,bin目錄下存在4個文件:
clish : cli的實例程序,啟動這個就可以像cli一樣交互了,即:真正的交互程序konfd : 用于存儲當前配置的守護程序,即:clish需要與konfd通過unix socket連接konf :從 shell 與 konfd 守護進程通信的實用程序。sigexec : 用于從不可中斷的 ACTION 腳本啟動守護進程的實用程序。如:啟動某個服務snmp/vftpd這個程序涉及到后續XML文件中的<ACTION></ACTION>標簽
啟動過程:
??????? 1,啟動konfd : ./konfd
??????? 2,創建環境變量:
????????????????CLISH_PATH=/home/work/klish-2.2.0/xml-examples/klish/etc/clish-enable
可查看源代碼中的clish.c -> CLISH_PATH
如下:
????????/*
?????????* if CLISH_PATH is unset in the environment then this is the value used.
?????????*/
????????const char *default_path = "/etc/clish;~/.clish"; 所以默認是etc下??????? 注: 使用klish安裝目錄下默認的xml文件
??????? 3,啟動clish:./clish
啟動完成: 輸入‘?’,顯示當前視圖下的命令
使用其中的ping 和 show ip route: 輸入命令后,可使用Tab補全
4,clish中的XML文件
我使用的是如下路徑的xml例子文件:
[root@hero clish-enable]# pwd
/home/work/klish-2.2.0/xml-examples/klish/etc/clish-enable
?ping.xml ,route.xml,interface.xml 是 剛剛提供的clish交互過程的命令
startup.xml : 是定義的首個啟動視圖,默認啟動視圖可修改,但僅僅一個
types.xml : 是<PARAM>標簽中使用到的數據類型定義
可參考Klish提供的手冊:
pkun/klish: The klish is a framework for implementing a CISCO-like CLI on a UNIX systems. It is configurable by XML files. @ 2.2 - libcode
5,總結
??????? 本文介紹了Klish的安裝于測試,方便后面參考,但klish不僅僅只有這些,對其中的xml文件如何配置,如何讀取還需要繼續研究。可參考手冊獲取更多信息。