在通信设备领域,思科的路由器设备可以用CLI进行操作。这里介绍的开源项目klish是思科CLI风格(CISCO-like CLI)的框架。命令配置文件为xml格式。

源码:pkun/klish: The klish is a framework for implementing a CISCO-like CLI on a UNIX systems. It is configurable by XML files. - libcode

环境

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

CLI框架:klish安装与使用的更多相关文章

  1. Yaf零基础学习总结2-Yaf框架的安装

    接着上一篇文章<Yaf零基础学习总结1-Yaf框架简介>我们对Yaf框架有那么一个大概的了解了,但是对于程序员来说,那些文字都是表面的,他们最想的就是开始敲代码了.当然这也是学习Yaf框架 ...

  2. windows下游戏服务器端框架Firefly安装说明及demo运行

    原地址:http://blog.csdn.net/wangqiuyun/article/details/11150503 本来公司一个网游服务器端选定了pomelo框架,后来出了个Firefly,为做 ...

  3. linux下Python网络编程框架-Twisted安装

    Twisted是python下的用来进行网络服务和应用程序编程的框架,安装Twisted前需要系统预先安装有python. 一.安装Twisted http://twistedmatrix.com/R ...

  4. 深度学习框架-caffe安装-环境[Mac OSX 10.12]

    深度学习框架-caffe安装 [Mac OSX 10.12] [参考资源] 1.英文原文:(使用GPU) [http://hoondy.com/2015/04/03/how-to-install-ca ...

  5. 深度学习框架-caffe安装-Mac OSX 10.12

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...

  6. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  7. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  8. python爬虫中scrapy框架是否安装成功及简单创建

    判断框架是否安装成功,在新建的爬虫文件夹下打开盘符中框输入cmd,在命令中输入scrapy,若显示如下图所示,则说明成功安装爬虫框架: 查看当前版本:在刚刚打开的命令框内输入scrapy versio ...

  9. .NET EF框架的安装、及三种开发模式

    一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...

  10. python爬虫随笔-scrapy框架(1)——scrapy框架的安装和结构介绍

    scrapy框架简介 Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试 ...

随机推荐

  1. 一个 dubbo 和 springboot 的兼容性问题

    背景介绍 最近把dubbo的版本从2.7.3升级到2.7.15时,遇到一个报错 No application config found or it's not a valid config! ,对应的 ...

  2. Node.js(七)MySql+ajax

    Api.js const express=require("express"); const router=express.Router(); const mysql = requ ...

  3. 谣言检测(ClaHi-GAT)《Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks》

    论文信息 论文标题:Rumor Detection on Twitter with Claim-Guided Hierarchical Graph Attention Networks论文作者:Erx ...

  4. 驱动开发:内核中实现Dump进程转储

    多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码后,我们可以很容易的将内存镜像导 ...

  5. 初始Vue、Vue模板语法、数据绑定(2022/7/3)

    文章目录 1.Vue简介 1.1.Vue的安装使用 1.2.实际的运用案例 1.3.vue开发工具的使用(这个需要在浏览器中安装) 2.初始Vue 2.1 .基础知识 2.1 .代码实例 2.2 .页 ...

  6. SQL 报表制作和整形

    本文章主要介绍制作报表的查询,这些查询通常需要考虑与报表相关的格式设置,还需使用多级聚合. 1.将结果集转置为一行(行转列) 将多行中的值转换为单行中的列. 情景:有一个员工表,统计出一个结果集,显示 ...

  7. ATT&CK框架整理(中英文整理)

    工作需要了解了一下ATT&CK框架,留个记录.

  8. Python基础之函数:2、globlal与nonlocal和闭包函数、装饰器、语法糖

    目录 一.global与nonlocal 1.global 2.nonlocal 二.函数名的多种用法 三.闭包函数 1.什么是闭包函数 2.闭包函数需满足的条件 3.闭包函数的作用 4.闭包函数的实 ...

  9. 如何避免由 Web 字体引起的布局偏移

    前言 一些布局上的完全加载前后的变化很容易解决:为动态元素预先分配正确的空间,在图像上使用宽度和高度属性,并优先考虑 HTML 文档中的可见元素.但是,导致布局偏移的还有一个难以解决的问题:无样式文本 ...

  10. Go语言核心36讲49

    我们在上一篇文章中简单地讨论了网络编程和socket,并由此提及了Go语言标准库中的syscall代码包和net代码包. 我还重点讲述了net.Dial函数和syscall.Socket函数的参数含义 ...