在通信设备领域,思科的路由器设备可以用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. Tubian系统无法打开Android子系统的解决方法

    打开Konsole,Konsole在程序菜单(左下角Logo)-系统中 输入: sudo nano /var/lib/waydroid/waydroid.cfg 回车 按方向键,把光标移动到[prop ...

  2. The XOR Largest Pair (trie树)

    题目描述 在给定的 NN 个整数 A_1,A_2,--,A_NA1​,A2​,--,AN​ 中选出两个进行xor运算,得到的结果最大是多少?xor表示二进制的异或(^)运算符号. 输入格式 第一行输入 ...

  3. 『现学现忘』Git后悔药 — 33、revert撤销(二)

    目录 4.一次移除某几次提交 (1)git revert移除某几次提交的修改 (2)git revert 移除某几次连续的提交的修改 5.revert命令常用参数 6.git revert和git r ...

  4. Linux基础_3_文件/文件夹权限管理

    注:权限遮罩码: 控制用户创建文件和文件夹的默认安全设置,文件默认权限为666-umask的值,文件夹默认权限为777-umask的值. root默认0022,普通用户默认0002. 文件的默认权限不 ...

  5. 浅谈ORM-对象关系映射

    目前.NET(C#)中比较流行的ORM框架: SqlSugar (国内) Dos.ORM (国内) Chloe (国内) StackExchange/Dapper (国外) Entity Framew ...

  6. 二、Celery执行一步任务

    二.Celery执行异步任务 2.1.基本使用 创建项目celerypro 创建异步任务执行文件celery_task: import celery import time backend='redi ...

  7. CSS布局秘籍(2)-6脉神剑

    HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...

  8. 二叉搜索树 - C++ 实现

    二叉搜索树 - C++ 实现 概述 Overview 二叉查找树(英语:Binary Search Tree, 后文中简称 BST), 也称为二叉搜索树.有序二叉树(ordered binary tr ...

  9. K8s 生产最佳实践-限制 NameSpace 资源用量

    前言 想象一下这个场景:多个系统运行在同一套 K8s 集群上,有重要系统,也有不太重要的系统.但是某一天,某个不重要的系统突然占用了该 K8s 集群的所有资源,导致该集群上的其他系统的正常运行受到影响 ...

  10. 网络yum源下载

    思路一: 按照本地网罗源,然后使用reposync直接将源同步下载到本地 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/re ...