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文件如何配置,如何读取还需要继续研究。可参考手册获取更多信息。