跳转至
首页 解决方案 下载 文档
演示环境

作业平台脚本开发

OpsAny作业平台支持Shell、Python、BAT、Powershell脚本语言来编写脚本进行批量自动化远程执行。通过编写脚本可以实现运维各种各样的场景,例如补丁管理,就可以创建一个作业编排,先使用文件分发,然后使用脚本执行即可完成。

Tip

小提示:所有类型的脚步均通过脚本的最后一条执行命令的成功或者失败作为脚本的最终状态,所以请在脚本中自行处理此问题。

Shell脚本编写

Shell脚本内置了开始(job_start)、成功(job_success)、失败(job_fail)三个函数,可以用于脚本编写时调用,例如使用if做执行状态的判断等。

#!/bin/bash
#------内置脚本方法,可以直接调用------
anynowtime=$(date +'%Y-%m-%d %H:%M:%S')
NOW="echo [$anynowtime][PID:$$]"

#可在脚本开始运行时调用,打印当时的时间戳及PID。
job_start(){
    echo "$(eval $NOW) job_start"
}

#可在脚本执行成功的逻辑分支处调用,打印当时的时间戳及PID。 
job_success(){
    MSG="$*"
    echo "$(eval $NOW) job_success:[$MSG]"
    exit 0
}

#可在脚本执行失败的逻辑分支处调用,打印当时的时间戳及PID。
job_fail(){
    MSG="$*"
    echo "$(eval $NOW) job_fail:[$MSG]"
    exit 1
}

job_start
#------可在此处下面开始编写您的脚本逻辑代码------

Python脚本编写

Python脚本编写内置了开始(job_start)、成功(job_success)、失败(job_fail)三个函数,可以直接调用。

#!/usr/bin/env python3
# -*- coding: utf8 -*-

import datetime
import os
import sys

def _now(format="%Y-%m-%d %H:%M:%S"):
    return datetime.datetime.now().strftime(format)

# 可在脚本开始运行时调用,打印当时的时间戳及PID。
def job_start():
    print("[%s][PID:%s] job_start" % (_now(), os.getpid()))

# 可在脚本执行成功的逻辑分支处调用,打印当时的时间戳及PID。 
def job_success(msg):
    print("[%s][PID:%s] job_success:[%s]" % (_now(), os.getpid(), msg))
    sys.exit(0)

# 可在脚本执行失败的逻辑分支处调用,打印当时的时间戳及PID。
def job_fail(msg):
    print("[%s][PID:%s] job_fail:[%s]" % (_now(), os.getpid(), msg))
    sys.exit(1)

if __name__ == '__main__':
    job_start()

建议使用脚本仓库来保存脚本。然后在执行作业时,直接选择脚本仓库中的脚本。

Document