在 pythoncmd
模块中,当我按下 TAB 按钮时,我会得到可用且我在cmd.Cmd
课堂上定义的可能命令列表。我的问题是是否可以根据上下文显示一组命令,例如在 Cisco 路由器 CLI 中?
问问题
1255 次
3 回答
1
我对这个库没有任何经验,但医生说
如果启用完成,将自动完成命令,并通过
complete_foo()
使用参数 text、line、begidx 和 endidx 调用来完成命令 args。text 是我们试图匹配的字符串前缀:所有返回的匹配必须以它开头。line 是删除了前导空格的当前输入行,begidx 和 endidx 是前缀文本的开始和结束索引,可用于根据参数所在的位置提供不同的补全。
所以,也许你可以在complete_foo
函数中实现基于上下文的完成
于 2015-02-11T11:34:14.277 回答
0
我找到了我的问题的答案。可以使用嵌套解释器,因此嵌套解释器是另一个具有自己命令的解释器对象,这样每个上下文都可以由嵌套解释器建模。这是一个很好的解释和示例:
于 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 示例
PS:我是作者。
于 2015-06-06T04:13:46.773 回答