全部产品

脚本编写说明

脚本是一段Python代码,要求脚本里面定义好与模板名同名的函数,作为执行任务的入口函数。

内置函数说明

  • logger

logger是标准模块logging.Logger的一个实例。

用户可以参考下⾯的⽅式输出日志,所有的日志都会记录在数据库中,可以在任务管理⻚⾯查询。

def logger_example():
    logger.error("an error message")
    logger.warn("a warning message")
    logger.info("an info message")
    logger.debug("a debug message")
  • login_device

login_device负责处理设备的登录登出,以及保证设备操作的串⾏化。

  • exec_cli

exec_cli负责向设备下发命令,只能用于login_device装饰的函数中。

完整参数列表:

command: string|list,向设备下发的指令或指令列列表

timeout: int,默认65s,系统等待设备响应命令完成的超时时间,时间到⽽而设备没能完成响应则会有Timeout异常抛出

style: string,控制返回内容结构

simple: 回显去除掉input command和终端提示符后剩余内容

tuple: 将回显内容进⾏行行拆分,返回(command, output)的列表

verbose: 默认值,将设备回显内容原样返回

strict: boolean,默认值True,是否对回显内容作异常关键字判断。如果命中关键字,则会抛出抛出异常SYSTEM_BUSY或BAD_DEVICE_RESPONSE。

⽬前关键字列列表包括

System is busy

Permission denied

syntax error.

Unrecognized command

Invalid command

Invalid parameter

at '^' marker

Unknown command

at '^' position.

Incomplete command

unknown command

Operation fail

error: configuration database locked by

TCAM region is not configured

Invalid input

Request denied

Authorization denied

error: commit failed

Unavailable command

Cannot apply ACL

  • exec_script

exec_script用于调用其他模板。

def exec_script_example(target, cli):
    # 调用exec_cli_example的设备模板
    return exec_script('exec_cli_example', _target=target, cli=cli)
  • exec_script_async

exec_script_async用于异步调用模板。

def exec_script_async_example(target, cli):
    # 异步调用device_login_example的设备模板
    task =  exec_script('exec_cli_example', _target=target, cli=cli)
    # 获取异步任务的结果
    result = task.get()
    return result

输入参数说明

  • 设备模板默认第一个参数是_target,类型是string,可以是设备的id,设备的主机名或者IP

输出参数说明

  • 主要用于变更方案步骤编辑中