0

在 pythoncmd模块中,当我按下 TAB 按钮时,我会得到可用且我在cmd.Cmd课堂上定义的可能命令列表。我的问题是是否可以根据上下文显示一组命令,例如在 Cisco 路由器 CLI 中?

4

3 回答 3

1

我对这个库没有任何经验,但医生

如果启用完成,将自动完成命令,并通过complete_foo()使用参数 text、line、begidx 和 endidx 调用来完成命令 args。text 是我们试图匹配的字符串前缀:所有返回的匹配必须以它开头。line 是删除了前导空格的当前输入行,begidx 和 endidx 是前缀文本的开始和结束索引,可用于根据参数所在的位置提供不同的补全。

所以,也许你可以在complete_foo函数中实现基于上下文的完成

于 2015-02-11T11:34:14.277 回答
0

我找到了我的问题的答案。可以使用嵌套解释器,因此嵌套解释器是另一个具有自己命令的解释器对象,这样每个上下文都可以由嵌套解释器建模。这是一个很好的解释和示例:

对象继承和嵌套cmd

于 2015-02-11T21:10:59.590 回答
0

如果您想要 Cisco 之类的东西,请查看 ishell,

ishell 帮助您轻松地为您的应用程序创建交互式外壳。它支持命令完成、动态参数、命令历史记录和命令链接。

https://github.com/italorossi/ishell

在https://github.com/italorossi/ishell/blob/master/examples/cisco.py有一个类似 cisco 的 cli 示例 思科 ishell 示例

PS:我是作者。

于 2015-06-06T04:13:46.773 回答