CLI框架:klish安装与使用
2024-10-21 02:59:27
在通信设备领域,思科的路由器设备可以用CLI进行操作。这里介绍的开源项目klish是思科CLI风格(CISCO-like CLI)的框架。命令配置文件为xml格式。
环境
Ubuntu 20.04.2 LTS
编译
版本:klish 2.2
//1. 运行autogen.sh生成configure文件
klish# ls
autogen.sh
klish# ./autogen.sh
Makefile.am: installing 'aux_scripts/depcomp'
autoreconf: Leaving directory `.'
生成configure文件
klish# ls
autogen.sh
configure
//2. 运行configure生成Makefile文件
klish# ./configure
config.status: executing libtool commands
config.status: executing depfiles commands
生成makefile文件
klish# ls
autogen.sh
configure
Makefile
//3. make编译
klish# make
make[1]: Leaving directory '/workspace/klish'
//4. make install安装
klish# make install
Libraries have been installed in:
/usr/local/lib
/bin/mkdir -p '/usr/local/bin'
/bin/bash ./libtool --mode=install /usr/bin/install -c bin/clish bin/konfd bin/konf bin/sigexec '/usr/local/bin'
遇到过的问题
问题1
缺少宏定义:AC_PROG_LIBTOOL
# ./autogen.sh
+ mkdir -p m4
+ autoreconf -fvi
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
configure.ac:417: warning: macro 'AM_LANGINFO_CODESET' not found in library
autoreconf: configure.ac: tracing
autoreconf: configure.ac: creating directory aux_scripts
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
configure.ac:20: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:21: error: possibly undefined macro: AC_PROG_LIBTOOL
configure.ac:431: error: possibly undefined macro: AM_LANGINFO_CODESET
autoreconf: /usr/bin/autoconf failed with exit status: 1
解决:
网上搜了下这个宏,发现是缺少了依赖库。安装了依赖库后可以继续往下走。
sudo apt-get install libtool
问题2
找不到头文件expat.h
# make
clish/shell/shell_expat.c:40:10: fatal error: expat.h: No such file or directory
#include <expat.h>
^~~~~~~~~
compilation terminated.
Makefile:1798: recipe for target 'clish/shell/libclish_la-shell_expat.lo' failed
解决:
网上查询发现少了依赖库。安装后继续
# apt-get install libexpat1-dev
问题3
缺少XML_ParserCreate
libtool: link: gcc -Wall -g -O2 -o bin/.libs/clish bin/clish.o ./.libs/libclish.so ./.libs/libkonf.so ./.libs/libtinyrl.so ./.libs/liblub.so -ldl
./.libs/libclish.so: undefined reference to `XML_ParserCreate'
./.libs/libclish.so: undefined reference to `XML_SetCharacterDataHandler'
./.libs/libclish.so: undefined reference to `XML_ParserFree'
./.libs/libclish.so: undefined reference to `XML_SetUserData'
./.libs/libclish.so: undefined reference to `XML_Parse'
./.libs/libclish.so: undefined reference to `XML_SetElementHandler'
collect2: error: ld returned 1 exit status
Makefile:1327: recipe for target 'bin/clish' failed
make[1]: *** [bin/clish] Error 1
make[1]: Leaving directory '/home/klish'
Makefile:717: recipe for target 'all' failed
make: *** [all] Error 2
解决:
网上查询发现缺少库libxml2
# apt-cache search libxml
libxml2 - GNOME XML library
libxml2-dev - Development files for the GNOME XML library
# apt-get update
# apt-get install libxml2-dev
运行
klish-2.2# CLISH_PATH=xml-examples/klish/etc/clish bin/clish
> show
Syntax error: Unknown command
klish-2.2# CLISH_PATH=xml-examples/klish/etc/clish-enable bin/clish
#
! Comments
configure Enter configuration mode
copy Copy from one file to another
disable Turn off privileged commands
exit Exit from the CLI
ping Send messages to network hosts
reboot Halt and perform a cold restart
show Show running system information
traceroute Print the route packets trace to network host
# configure terminal
(config)#
! Comments
do To run exec commands in config mode
exit Exit from configure mode
hostname Set system's network name
interface Select an interface to configure
ip Global IP configuration subcommands
no Negate a command or set its defaults
(config)# ip route 172.0.11.2/24 172.0.11.1
/tmp/klish.fifo.9205.MfgOB7: 6: /tmp/klish.fifo.9205.MfgOB7: ip: not found
最新文章
- C#字符串排序效率
- mongoTemplate简单用法(增删改查)
- Bluetooth Low Energy 嗅探
- UWP滑动后退
- 多态、GC、Java数据类型
- 使用MVVM框架时,如何处理在页面动态渲染完之后需要发生的事件呢?
- Spring中的Autowired注解和Resource注解的区别
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
- flatbuffers 使用问题记录
- 利用over开窗函数取第一条记录
- 自制单片机之九……写给对制做并口ISP下载线有疑惑的朋友
- Windows Azure 社区新闻综述(#78 版)
- Java常用代码段 - 未完待续
- 解决Myeclipse在port占用,导致tomcat无法启动。(Linux)
- 【瞎搞搞之】 window_x64微信小程序环境搭建
- maven中的profile文件的解析
- STL - 容器共性机制研究
- SpringCloud Feign的分析
- ios中iframe页面出现白屏问题
- react 嵌套组件的通信