不使用任何语言的cli

netcli的Python项目详细描述


Build Status

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

删除

$ 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全局延迟因子

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么Camel Spring 2.20.2会导致NIST漏洞CVE20169878和CVE20175929   javascript如何在Lodash中获取数组索引。每个   如何在java中欺骗ip   选择的java DropdownChoice与模型值不同,在ajax更新时更改   用于Java库ant构建的GnuPG问题/错误   java Atlas Mapper:使用Atlas Mapping文档为给定负载执行映射   java Paypal Broadleaf集成   java Meteor客户端函数,然后是服务器端响应   JavaJPA2在JavaSE中使用EntityManager有几个问题   java是否将时间戳格式的值更改为其他时间戳格式?   java为什么IF语句不能处理四舍五入的浮点和双精度浮点?   java无法访问handle事件中的按钮/文本区域   java Eclipse将数据插入MySQL时出现while循环未指定值错误   调试是java类库的启用调试/编译版本仍然可用   异步java。lang.ClassCastException:无法强制转换为组织。springframework。util。同时发生的可听未来   打印总是选择默认打印机,而不是指定的JAVA打印机   在Java中实现多重继承的对象   java如何从具有特定联系人的其他应用程序打开Whatsapp?   unicode字符串的java gson序列化不起作用   java如何从Android向flask服务器发送带有参数的post请求?