这个东东,花了两天来查找资料和测试,终于算是搞定。作记录:
直接在MASTER上执行的命令:
salt '*' cmd.script salt://scripts/windows_task.ps1 args=' -Input c:\tmp\infile.txt' shell='powershell'
直接通过SALT-API执行的命令:
curl -k https://127.0.0.1:8000/ -H "Accept: application/x-yaml" -H "X-Auth-Token: 0ef19709d068834637758b1b5a9af6927a7a651d" -d client='local' -d tgt='cnsz121685-10.25.174.81' -d fun='cmd.script' -d arg='salt://tengine_root/autodeploy/opscripts/test/sbp.ps1' -d arg="static ADE 20160127091855DB backup" -d arg='shell=powershell'
通过我们的API传参考:
if server_sys == 'LINUX': args = [salt_cmd.strip(), server_type+' '+site_name+' '+app+' '+deploy_version+' '+action, 'runas='+op_name] if server_sys == 'WINDOWS': args = [salt_cmd.strip(), server_type+' '+site_name+' '+app+' '+deploy_version+' '+action, 'shell=powershell'] result = saltapi_inst(server_env).cmd_script(tgt, args)
而自制API用了REQUESTS。
def cmd_script(self, tgt, arg, expr_form='compound', fun='cmd.script'): r = requests.post(self.host, verify=False, cookies=self.cookies, data={'tgt': tgt, 'client': 'local', 'expr_form': expr_form, 'fun': fun, 'arg': arg}) if r.status_code == 200: # print r.json() return r.json() else: raise Exception('Error from source %s' % r.text)