saltstack作業(yè)執(zhí)行

作業(yè)執(zhí)行過(guò)程


代碼如下:

# test.ping心跳檢測(cè)
def isline(hostname):
    from exec_jobs import select_salt_return
    # test.ping存活判斷,可以直接用local.cmd,返回True判斷
    line_id = local.cmd_async(hostname,'test.ping','','pcre')
    # 數(shù)據(jù)庫(kù)返回執(zhí)行結(jié)果
    islines = select_salt_return(line_id)
    # 返回空為失敗
    if not islines:
        return False
    else:
        return True

## 執(zhí)行腳本判斷,shell與Python分開(kāi)執(zhí)行
def file_output(editor,job_name,script,hostName,params):
    # 判斷服務(wù)器是否存活,不存活返回失敗
    lines = isline(hostName)
    if lines is False:
        return False
    if script == 'shell':
        # job_name轉(zhuǎn)utf-8
        job_name = job_name.decode('utf-8').encode('utf-8')
        # 生成文件目錄
        output = open('/CMDB/exec_file/{0}.sh'.format(job_name),'w')
        # 存放文件內(nèi)容
        param_output = ""
         # 逐行存放到文件中
        for param in params:
            param_output = "{0}={1}".format(param['param_name'],param['param_value'])
            output.write(param_output + '\n')
        # 寫(xiě)入文件
        output.write(editor)
        output.close()
        # 生成執(zhí)行文件名
        job_names = job_name + '.sh'
        # salt遠(yuǎn)程傳輸文件
        local.cmd(hostName,'cp.get_file',['salt://exec_file/{0}'.format(job_names),'/tmp/exec_job/{0}'.format(job_names),'base',True],'','pcre')
        # 空格轉(zhuǎn)義
        job_names = job_names.replace(" ","\ ")
        # 遠(yuǎn)程執(zhí)行腳本
        job_id = local.cmd_async(hostName,'cmd.run',['bash  -xe /tmp/exec_job/{0}'.format(job_names)],'pcre')
        # 保存執(zhí)行語(yǔ)句
        command_names = 'bash  -xe /tmp/exec_job/{0}'.format(job_names)
    else:
        # 生成文件目錄
        output = open('/CMDB/exec_file/{0}.py'.format(job_name),'w')
        # 寫(xiě)入文件
        output.write(editor)
        output.close()
        # 生成執(zhí)行文件名
        job_names = job_name + '.py'
        # salt遠(yuǎn)程傳輸文件
        local.cmd(hostName,'cp.get_file',['salt://exec_file/{0}'.format(job_names),'/tmp/exec_job/{0}'.format(job_names),'base',True],'','pcre')
        # 空格轉(zhuǎn)義
        job_names = job_names.replace(" ","\ ")
        # 遠(yuǎn)程執(zhí)行腳本
        job_id = local.cmd_async(hostName,'cmd.run',['python /tmp/exec_job/{0}'.format(job_names)],'pcre')
        # 保存執(zhí)行語(yǔ)句
        command_names = 'bash  -xe /tmp/exec_job/{0}'.format(job_names)
    return job_id, command_names
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容