不使用任何语言的cli
netcli的Python项目详细描述
netcli
netcli是为那些不想记住来自每个供应商设备的每个命令的人提供的cli。
如今,网络已经从传统的cli操作中脱离出来,但是当cli交互带来一些好处时,仍然有一些调试用例。然而,当您花更多的时间编写代码而不是cling时,您最终会忘记特定的cli语法,这在管理多供应商车队时仍然是必需的。
要解决此问题,netcli允许您创建自己的cli语言,以便使用自己的自定义命令与任何设备进行交互。
netcli使用一种简单的方法解决了这个问题:
- 您有一个config模式来处理您的自定义命令以及您感兴趣的所有特定供应商的转换。
- 您有一个connect模式,可以对您的设备运行交互式cli并享受您的命令
安装
pip install netcli
如何运行它
配置
Your customs commands will be stored in
~/.my_netcli_commands.json
添加
$ netcli config add "bgp received routes neighbor:192.0.2.1"
注意:
- 使用引号添加命令
- 参数应该在末尾,使用模式
<arg_name>:<default_value>
这将进入交互模式以提供:
- 描述:有助于记住此命令的作用
- 特定于供应商的实现,使用以下格式:
<vendor_type> - <vendor_command>
- important在
<vendorcommand>
中,可以使用[arg_name]
放置提供的参数 - 示例:
show bgp summary [instance (vrf)]
- 每个参数都在方括号之间
[]
- 在括号中,括号
()
是将被替换的关键字 - 如果参数关键字的字符串值为“none”,则参数(和相关文本)将被忽略
- 每个参数都在方括号之间
<vendor_type>
来自Netmiko library
- important在
删除
$ netcli config delete "bgp received routes"
显示
$ netcli config show
它列出带有说明和端口的自定义命令。
如果需要供应商实现,请使用--verbose
交互式cli
$ netcli connect <target> -v <vendor_type>
好好享受吧!
注意:
- 要覆盖默认值,请使用
[<arg_name>:<new_value>]
- 执行raw命令可以使用
r-
启动命令
- 通过添加
|
和要匹配的字符串,可以实现自定义命令的匹配输出 - 使用
help
/h
获得额外帮助
默认选项
您可以使用文件~/.netcli.cfg
来定义一些自定义值以便于操作,从而覆盖默认行为:
{
"dns_suffix": ".opendns.com",
"global_delay_factor": 6,
"max_lines": 20
}
支持的值:
- dns_后缀连接在目标名称的末尾
- {STR 1 } $ MaxΩ线限制要返回到CLI的最大行数(这不影响日志)
- log_path存储会话日志的完整路径。默认情况下是当前目录,带有时间戳(即netcli_-194937)
- timeoutnetmiko超时
- 全局延迟因子netmiko全局延迟因子