diff --git a/plugins/docker/index.py b/plugins/docker/index.py index 0eecf1b76..4f67cd2ba 100755 --- a/plugins/docker/index.py +++ b/plugins/docker/index.py @@ -271,6 +271,28 @@ def dockerStopCon(): return mw.returnJson(False, '停止失败!' + str(ex)) +def dockerExec(): + # 容器执行命令 + args = getArgs() + data = checkArgs(args, ['Hostname']) + if not data[0]: + return data[1] + + Hostname = args['Hostname'] + + debug_path = 'data/debug.pl' + if os.path.exists(debug_path): + return mw.returnJson(False, '开发模式不能进入!') + + c = getDClient() + try: + conFind = c.containers.get(Hostname) + cmd = 'docker container exec -it %s /bin/bash' % Hostname + return mw.returnJson(True, cmd) + except docker.errors.APIError as ex: + return mw.returnJson(False, '连接失败!') + + def imageList(): imageList = [] c = getDClient() @@ -470,6 +492,8 @@ if __name__ == "__main__": print(dockerRunCon()) elif func == 'docker_stop_con': print(dockerStopCon()) + elif func == 'docker_exec': + print(dockerExec()) elif func == 'image_list': print(imageListData()) elif func == 'docker_remove_image': diff --git a/plugins/docker/js/docker.js b/plugins/docker/js/docker.js index 33ddf69dc..cc0aa11e1 100755 --- a/plugins/docker/js/docker.js +++ b/plugins/docker/js/docker.js @@ -117,6 +117,31 @@ function stopCon(Hostname){ }); } +function execCon(Hostname){ + webShell(); + var pdata_socket = {}; + var shell = setInterval(function(){ + if($('.term-box').length == 0){ + pdata_socket['data'] = 'exit\n'; + socket.emit('webssh',pdata_socket); + setTimeout(function(){socket.emit('webssh',pdata_socket['data']);},1000); + clearInterval(shell); + } + },500); + setTimeout(function(){ + dPost('docker_exec','',{Hostname:Hostname},function(res){ + var res = $.parseJSON(res.data); + if(!res.status){ + layer.msg(res.msg,{icon:res.status?1:2}); + }else{ + pdata_socket['data'] = 'clear && ' + res.msg +'\n' + socket.emit('webssh',pdata_socket); + setTimeout(function(){socket.emit('webssh',pdata_socket['data']);},1000); + } + }); + }); +} + function dockerConListRender(){ dPost('con_list', '', {}, function(rdata){ var rdata = $.parseJSON(rdata.data); @@ -139,7 +164,7 @@ function dockerConListRender(){ } var op = ''; - op += '终端 | '; + op += '终端 | '; op += '日志 | '; op += '删除';