一种自动控制多套Tomcat服务的方法、系统及介质与流程

文档序号:26278514发布日期:2021-08-13 19:34阅读:101来源:国知局
一种自动控制多套Tomcat服务的方法、系统及介质与流程

本发明涉及计算机技术领域,特别是涉及一种自动控制多套tomcat服务的方法、系统及介质。



背景技术:

tomcat是一个万维网应用服务器,运行在主服务器中,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用。

随着互联网的发展,越来越多的公司内开发的项目也越来越多,并且很多项目都是并行开发的,各个项目的开发团队需要的服务器也相应增多;当项目开发完成后,需要进行项目测试,而有些项目需要测试人员在工作过程中频繁的与linux系统进行大量重复性的交互,并且需要测试人员熟悉linux系统的命令才能进行测试。

目前业内在开发,调试,监控过程中最常使用的方法是利用第三方软件如xshell、putty等可以远程登录linux服务器的软件来连接服务器,然后在目标服务器上执行命令或脚本。

但是连接服务器后如果服务器的ip地址、端口、登录名、密码、tomcat服务名变动后需要及时更新配置项,否则在与服务器建立连接或发送命令时报异常,并且如果一个项目涉及多台服务器则会每次在不同服务器上对不同tomcat服务操作时重复相同的繁琐的步骤。



技术实现要素:

本发明主要解决是如果服务器信息改变,需及时更新配置项否则会报错以及如果一个项目涉及多台服务器则会每次在不同服务器上对不同tomcat服务操作时重复相同的繁琐的步骤的问题。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种自动控制多套tomcat服务的方法,应用于linux服务器,所述方法包括以下步骤:创建数据存储表以及选项控制区域,所述选项控制区域中设有监控策略、tomcat控制策略以及数据清理策略;

获取linux服务器的信息,并存储至所述数据存储表中,读取所述数据存储表中信息并通过所述选项控制区域进行显示;

通过所述监控策略监控所述linux服务器的内存数据,并通过所述选项控制区域进行显示;

通过所述tomcat控制策略重启所述linux服务器中的tomcat,并通过所述选项控制区域进行显示重启结果;

通过所述数据清理策略清理所述linux服务器中tomcat日志,并通过所述选项控制区域进行显示清理结果。

优选的,所述通过所述监控策略监控所述linux服务器的内存数据的步骤进一步包括:

设置ip地址以及端口号;

通过所述ip以及端口号匹配第一linux服务器;

建立所述第一linux服务器与所述选项控制区域的连接;

通过内存查询命令获取所述第一linux中的内存数据。

优选的,所述通过所述选项控制区域进行显示的步骤进一步包括:

将所述第一linux中的内存数据更新至所述数据存储表中;

通过所述选项控制区域进行显示所述内存数据。

优选的,所述通过所述tomcat控制策略重启所述linux服务器中的tomcat的步骤进一步包括:

设置ip地址、端口号、所属项目以及应用列表数据;

通过所述ip地址、端口号、所属项目以及应用列表数据匹配第一linux服务器;

建立所述第一linux服务器与所述选项控制区域的连接;

遍历所述第一linux服务器并依次执行tomcat重启命令,得到第一结果。

优选的,所述通过所述选项控制区域进行显示重启结果的步骤进一步包括:

根据所述第一结果执行异常判断策略;

通过所述选项控制区域进行显示所述异常判断策略的执行结果。

优选的,所述异常判断策略为:

设置启动成功信息;

判断执行所述tomcat重启命令时是否出现异常;

若执行所述tomcat重启命令时出现异常,则保存异常信息;

判断所述异常信息与所述启动成功信息是否相同;

若所述异常信息与所述启动成功信息相同,则tomcat重启成功,通过所述选项控制区域进行显示重启成功;

若所述异常信息与所述启动成功信息不相同,则tomcat重启失败,通过所述选项控制区域进行显示重启失败。

优选的,所述通过所述数据清理策略清理所述linux服务器中tomcat日志的步骤进一步包括:建立第一linux服务器与所述选项控制区域的连接;

通过清理日志命令查找并删除所述第一linux服务器中tomcat目录中的日志。

优选的,所述建立所述第一linux服务器与所述选项控制区域的连接的步骤进一步包括:

通过paramiko模块中sshclient组件建立与所述第一linux服务器的连接通道;

通过autoaddpolicy命令添加密钥至所述第一linux服务器中;

通过所述sshclient组件中连接命令与所述第一linux服务器连接。

本发明还提供一种自动控制多套tomcat服务的系统,包括:存储模块、监控模块、tomcat控制模块、数据清理模块和显示模块;

所述存储模块用于获取linux服务器的信息,并进行存储;

所述监控模块用于监控所述linux服务器的内存数据;

所述tomcat控制模块用于重启所述linux服务器中的tomcat;

所述数据清理模块用于清理所述linux服务器中tomcat日志;

所述显示模块用于显示所述内存数据,用于显示重启所述linux服务器中的tomcat的结果,用于显示清理所述linux服务器中tomcat日志的结果。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现所述的一种自动控制多套tomcat服务的方法的步骤。

本发明的有益效果是:

1、本发明所述的一种自动控制多套tomcat服务的方法,通过匹配对应的linux系统执行查询内存操作、重启tomcat操作以及清理日志操作能够解决团队中测试人员在构建代码包时因服务器空间不足导致构建失败的问题、以及精简测试人员每次在不同服务器上对不同tomcat服务操作时繁琐又重复的步骤,并且能够方便的清理linux系统中的空间,提高了处理效率,提升服务器的性能。

2、本发明所述的一种自动控制多套tomcat服务的系统,可以不限制linux服务器连接数量,不用关心服务器配置信息,不用安装任何能够与服务器建立连接的第三方软件且无需执行linux命令,只需选择需要执行对应操作的模块即可完成,且通过显示模块能够实时进行显示,提高了交互性以及可操作性。

3、本发明所述的一种计算机可读存储介质,可以实现通过python的paramiko模块进行建立与服务器的连接,可以在python代码中直接使用ssh协议对远程服务器执行操作,并且测试人员无需linux命令即可操作,提升了测试的效率。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例1所述的一种自动控制多套tomcat服务的方法流程示意图;

图2是本发明实施例2所述的一种自动控制多套tomcat服务的系统架构示意图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“数据存储表”、“选项控制区域”、“监控策略”、“tomcat控制策略”、“数据清理策略”、“异常判断策略”应做广义理解。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

需要说明的是,在本发明的描述中:

paramiko是用python语言写的一个模块,遵循ssh2协议,支持以加密和认证的方式,进行远程服务器的连接。

django是一个开放源代码的web应用框架,由python写成。

在www上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫url(uniformresourcelocator,统一资源定位器),它是www的统一资源定位标志,就是指网络地址。

实施例1

本发明实施例提供一种自动控制多套tomcat服务的方法,应用于linux服务器,请参阅图1,包括以下步骤:

s100,进行建立部署环境;

通过使用python的paramiko模块中sshclient组件建立与linux服务器之间的连接通道;

通过autoaddpolicy自动添加主机名及主机密钥到linux服务器中;

通过sshclient组件中连接命令连接至linux服务器;

具体代码如下:

#导入paramiko包

importparamiko

#1、创建ssh对象

ssh=paramiko.sshclient()

#2、自动在对方主机保存下本机的秘钥

ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())

#3、连接到linux服务器

ssh.connect(hostname="172.16.1.2",port=22,username='root',password='passwd')

创建数据存储表tbtoolsenv,数据存储表用于存储linux服务器的信息,linux服务器的信息包括服务器的ip、端口、登录名、密码、tomcat服务名、该服务器的所属项目等信息;

获取若干linux服务器的信息,并存储至数据存储表tbtoolsenv中;

建立前端选项控制区域;

s200,读取数据存储表tbtoolsenv中的linux服务器的信息并通过前端选项控制区域进行显示;

s300,前端选项控制区域设有监控策略、tomcat控制策略以及数据清理策略;

s310,通过监控策略进行实时监控若干linux服务器中每个linux的已用内存数据,并更新至数据存储表tbtoolsenv中并在前端选项控制区域显示;

具体步骤如下:设置ip地址以及端口号;

通过所述ip以及端口号匹配第一linux服务器;

建立所述第一linux服务器与所述选项控制区域的连接;

通过内存查询命令获取所述第一linux中的内存数据;

将所述第一linux中的内存数据更新至所述数据存储表中;

通过所述选项控制区域进行显示所述内存数据。

具体实施步骤如下:

s311,在前端选项控制区域中设置“已用内存按钮”,通过点击“已用内存按钮”进行实时监控若干个linux服务器中每个linux的已用内存数据,从而帮助测试人员判断代码包构建失败的原因是否为linux服务器中内存不足;

点击“已用内存按钮”后触发querymeminfo()函数;

具体实现代码如下:

<buttontype="button"id="datausedmem"onclick="querymeminfo();"title="已用内存"></button>

在querymeminfo()函数中设置服务器的ip地址数据和以及端口号数据;

当触发querymeminfo()函数后,通过ip地址数据以及端口号数据匹配至对应的linux服务器;

然后通过$.ajax()方法并根据ip地址数据以及端口号数据执行ajax(异步http)请求,执行远程获取服务器中内存命令;

实现代码如下:functionquerymeminfo(){vardata={"dataip":"ip地址","dataport":"端口号",};$.ajax({url:"{%url"http_querymeminfo"%}",data:data,datatype:"json",type:"post",success:function(response){console.log('success---');

s312,与ip地址以及端口号对应的linux服务器建立连接通道,通过“已用内存”的linux查询命令、ip地址数据以及端口号数据查询并获取对应的linux服务器中已用内存数据;

具体实现代码如下:

“已用内存”的linux查询命令usedmem="df-h|awk'{print$5}'|head-2|tail|grep-op'\d+'"执行命令并从服务器获取到返回结果。stdin,stdout,stderr=ssh.exec_command(usedmem,get_pty=true)返回结果传给usedmemberusedmember,errmsg=stdout.read().decode(),stderr.read().decode()print('usedmember:',usedmember)

将已用内存数据更新至数据存储表tbtoolsenv中;

实现代码如下:

tbtoolsenv.objects.filter(dataip=dataip).update(usedmem=usedmember)

s313,使用web框架django按照$.ajax()方法中的已用内存数据分配至对应的view,通过前端选项控制区域进行显示;

具体实现代码如下:

url(r'^qa_tools/http_querymeminfo,auto_tools_conf.querymeminfo,

name="http_querymeminfo"),

s320,当若干linux服务器中tomcat服务需要重启时,通过tomcat控制策略进行重启tomcat服务,得到第一结果,根据第一结果执行异常判断策略,根据异常判断策略的执行结果显示异常判断策略的执行结果,并通过前端选项控制区域进行显示;

异常判断策略为:

设置启动成功信息;

判断执行所述tomcat重启命令时是否出现异常;

若执行所述tomcat重启命令时出现异常,则保存异常信息;

判断所述异常信息与所述启动成功信息是否相同;

若所述异常信息与所述启动成功信息相同,则tomcat重启成功,通过所述选项控制区域进行显示重启成功;

若所述异常信息与所述启动成功信息不相同,则tomcat重启失败,通过所述选项控制区域进行显示重启失败。

具体实施步骤如下:

s321,在前端选项控制区域中设置重启tomcat服务区域,点击重启tomcat服务区域,触发restarttomcat()函数;

实现代码如下:

<buttontype="button"class="btnbtn-warning"

onclick="restarttomcat();></button>

在restarttomcat()函数中设置服务器的ip地址数据和、端口号数据、服务器所属项目数据以及tomcat需要部署的应用列表数据;

与服务器的ip地址数据和、端口号数据、服务器所属项目数据以及tomcat需要部署的应用列表数据对应的linux服务器建立通道,该服务器记为第一linux服务器,

s322,tomcat需要部署的应用列表数据可能由多个tomcat组成,所以需要遍历第一linux服务器并依次执行tomcat重启命令;

tomcat重启命令为cmds:/wfapp/wf_mp_web/tomcat8/bin/shutdown.sh&&/wfapp/wf_mp_web/tomcat8/bin/startup.sh

执行tomcat重启命令,得到执行结果,根据执行结果判断tomcat重启是否成功,并通过前端选项控制区进行显示;

执行tomcat重启命令,得到执行结果,根据执行结果判断tomcat重启是否成功的具体步骤如下:

执行tomcat重启命令,得到执行结果,并进行保存;

判断执行tomcat重启命令时是否出现异常,若出现异常,则将异常的结果保存至异常信息;设置启动成功结果信息,将异常信息与启动成功结果信息进行对比,如果相同,则tomcat启动成功,如果不同则tomcat启动失败。

具体实现代码如下:

defrestarttomcat(request):dataip=request.post.get("dataip")dataport=request.post.get("dataport")dataproject=request.post.get("dataproject")dataservice=request.post.get("dataservice")#1、创建ssh对象ssh=paramiko.sshclient()#2、自动在对方主机保存下本机的秘钥ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())#3、连接到linux服务器ssh.connect(hostname=dataip,port=dataport,username='root',password='pwd')#4、dataservice的值内可能由的多个tomcat服务组成,将其用‘,’分隔成list类型,以便在for循环体内依次执行重启命令。strlist=dataservice.split(',')foriinstrlist:#重启命令格式:先shutdown进程,然后再startup#cmds:/wfapp/wf_mp_web/tomcat8/bin/shutdown.sh&&/wfapp/wf_mp_web/tomcat8/bin/startup.shcmds="/wfapp/"+dataproject+'/'+i+"/tomcat8/bin/shutdown.sh&&/wfapp/"+dataproject+'/'+i+"/tomcat8/bin/startup.sh"#连接到服务器并执行linux命令stdin,stdout,stderr=ssh.exec_command(cmds,get_pty=true)#执行结果传给outmsg;如果执行异常则异常结果传给errmsgoutmsg,errmsg=stdout.read().decode(),stderr.read().decode()

#tomcat启动成功的输出信息exesucc='tomcatstarted.'

#将outmsg的值与exesucc的值进行对比,如果返回true则证明tomcat启动成功,反之启动失败

ifexesuccinoutmsg:

print('tomcat启动成功!')

outmsg='tomcat启动成功!'

else:

print('tomcat启动失败!')

outmsg='tomcat启动失败!'

#打印结果print('outmsg:',outmsg)returnhttpresponse(apireturn(message=outmsg).tojson())

s330,通过数据清理策略清理linux服务器中某个tomcat服务的日志,释放该linux服务器中的内存,并通过前端选项控制区域进行显示清理完成信息;

具体步骤如下:与需要清理的linux服务器建立连接通道,执行清理日志命令,查找并删除当前linux服务器中tomcat的父级目录下的所有日志,将所有日志进行清理,清理完成后会提示“服务器日志文件全部清理完毕”,获取清理命令的执行结果,并通过前端选项控制区域进行显示;

具体实现代码如下:

defcleanlogs(request):dataip=request.post.get("dataip")dataport=request.post.get("dataport")outmsg=''#创建ssh连接ssh=paramiko.sshclient()ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())ssh.connect(hostname=dataip,port=dataport,username='root',password='pass')#查找并删除当前服务器tomcat的父级目录wfapp下所有*.log。全部清理完毕后会打印'服务器日志文件全部清理完毕!'mutulelogscln="foriin`find/wfapp-name'*.log'`;doecho''>$i;done;printf'服务器日志文件全部清理完毕!'"##执行命令并得到返回结果。务必要加上get_pty=true,否则执行命令会没有权限stdin,stdout,stderr=ssh.exec_command(mutulelogscln,get_pty=true)mu_outmsg,mu_errmsg=stdout.read().decode(),stderr.read().decode()outmsg=dataip+mu_outmsg#outmsg:'服务器日志文件全部清理完毕!'print('mutilemu_outmsg...............:',outmsg)#将清理完毕后输出的信息return给前端,以供前端将该值解释为用户可看到的提示信息。returnhttpresponse(apireturn(message=outmsg).tojson())

实施例2

本发明实施例还提供一种自动控制多套tomcat服务的系统,请参阅图2,包括:存储模块、监控模块、tomcat控制模块、数据清理模块和显示模块;

所述存储模块用于获取linux服务器的信息,并进行存储;

所述监控模块用于监控所述linux服务器的内存数据;

所述tomcat控制模块用于重启所述linux服务器中的tomcat;

所述数据清理模块用于清理所述linux服务器中tomcat日志;

所述显示模块用于显示所述内存数据,用于显示重启所述linux服务器中的tomcat的结果,用于显示清理所述linux服务器中tomcat日志的结果。

本发明实施例所述自动控制多套tomcat服务的系统的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。

实施例3

本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行如上方法的计算机程序,实现上述所述的一种自动控制多套tomcat服务的方法的步骤。

最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

此外,根据本发明实施例公开的方法还可以被实现为由处理器执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被处理器执行时,执行本发明实施例公开的方法中限定的上述功能。

此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。

此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1