阿里云首页 云网管

模板示例

提供模板和方案的具体示例。

设备模板示例(获取设备MAC)

  1. 创建名为get_mac的设备模板,新增脚本如下:设备模板示例

2. H3C脚本如下:

@login_device()
def get_mac():
    # 取消分页
    exec_cli('screen-length disable', strict=False)
    # 查询接口信息
    output = exec_cli('display interface | include Hardware|hardware')
    # 提取mac信息
    re_mac = re.compile(r"\s+([0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4})\s+")
    result = list(set(mac.replace('-', '.').lower() for mac in re_mac.findall(output)))
    result.sort()
    return result

3. Cisco脚本如下:

@login_device
def get_mac():
    # 取消分页
    exec_cli('terminal length 0')
    # 查询接口信息
    output = exec_cli('show interface | include Hardware', timeout=600)
    # 提取mac信息
    re_mac = re.compile(r"\s+([0-9a-fA-F]{4}\.[0-9a-fA-F]{4}\.[0-9a-fA-F]{4})\s+")
    result = list(set(mac.lower() for mac in re_mac.findall(output)))
    result.sort()
    return list(result)

4. 任务执行示例

任务执行示例任务回显:

回显

用户模板示例(批量获取设备MAC)

  1. 创建名为get_mac_multi用户模板,编辑脚本如下:

def get_mac_multi(targets):
    # 创建异步任务,调用get_mac设备模板
    tasks = {
        _: exec_script_async("get_mac", _target=_) for _ in targets
    }
    result = []
    for _ in targets:
        try:
            # 获取结果
            result.append(tasks[_].get())
        except Exception as e:
            result.append(None)
            # 获取出错信息并记录日志
            # get_exc_code 返回异常错误码
            # get_traceback 返回异常调用栈
            logger.error("%s fail code: %s, msg: %s, tb: %s", _, get_exc_code(e), e.message, get_traceback())
    return result

2. 执行示例

任务示例

任务日志:

任务日志