一种基于Python对服务器进行远程测试的方法与流程

文档序号:11250795阅读:957来源:国知局
一种基于Python对服务器进行远程测试的方法与流程

本发明涉及服务器测试技术领域,具体地说是一种基于python对服务器进行远程测试的方法。



背景技术:

随着目前互联网和大数据技术的不断发展,服务器的数量需求与型号需求越来越丰富。为了满足所有产品都经过完整测试的要求,单个测试人员势必要进行多个项目的测试,测试效率直线下降。因此,自动化测试的必要性就进一步加强。自动化测试一个很重要的特点就是远程测试。

以往的远程测试,大致分为两种:

第一种,测试人员手动ssh登陆

这种方法的优点是测试结果直观有效,测试人员能够进行丰富的操作。缺点在于,一旦不能顺利连接,测试人员需要进行各类排查,这一块根据测试人员经验的丰富度,难易程度呈两级分化状态,不利于工业化测试。

第二种,利用expect自动登陆:

这种方法的优点是能够自动登陆,进行自动化测试。缺点在于,通用性不够好。expect适用于交互性测试,但在远程测试的场景中,当自动登陆后,假若交回控制,当前终端将为远程机器,在随后的测试结束退出方面存在问题。假若不交回控制,直接结束连接。那么对于一个测试动辄好几十个命令的情况将会大量的建立连接,不仅存在稳定性的问题,还浪费时间。



技术实现要素:

为克服上述现有技术存在的不足,本发明的目的在于提供一种高效、客观的基于python对服务器进行远程测试的方法。

本发明解决其技术问题所采用的技术方案是:一种基于python对服务器进行远程测试的方法,其特征是:包括以下步骤,

s1,控制机对多个待测机同时进行远程连接测试;

s2,对通过连接测试的待测机进行远程连接;

s3,控制机对连接的待测机进行状态检测,待测机状态正常的进入s4,对状态不正常的待测机中断测试;

s4,对状态正常的待测机进行远程测试,并向控制机回传测试结果。

进一步地,步骤s1中所述远程连接测试包括ping通测试和ssh连接测试。

进一步地,所述ping通测试具体为:ping向每个待测机发送若干请求包,检测获取的响应包的个数,若至少获得1个响应包,则该待测机通过ping通测试,否则每隔特定时间重复发送请求包,直至达到最大发送次数,若控制机始终未收到响应包,则判定该待测机未通过ping通检测。

进一步地,控制机记录通过ping通测试的待测机返回响应包耗费的时间。

进一步地,所述特定时间为30秒,所述最大发送次数为20次。

进一步地,步骤s2中控制机通过python的paramiko模块进行远程连接,所述paramiko模块分别对待测机进行密码登陆尝试和rsa登陆尝试。

进一步地,步骤s3中所述远程连接包括:待测机记录自身的开机时间,控制机将所述开机时间与所述通过ping通测试的待测机返回响应包耗费的时间进行比较,根据比较的差值,判断待测机的启动状态是否正常。

进一步地,步骤s4中对所述状态正常的待测机进行远程测试包括在控制机上建立paramiko对象,根据待测机的信息,建立待测机与控制机的ssh连接,控制机通过ssh通道向待测机发送测试命令,待测机执行所述测试命令,获取测试结果,并将所述测试结果回传至控制机。

进一步地,所述待测机的信息包括待测机的ip、用户名和登陆密钥。

本发明的有益效果是:本发明利用1台控制机同时对多台待测机进行远程连接测试和远程检测,形成1对多的测试观察,提高测试效率,为后续的自动化测试奠定了基础;

在对待测机状态监测时,比较控制机和待测机分别记录的ping通时间和开机时间,客观的体现待测机的状态结果,避免人为监测的测试经验对于监测坚果的主观影响,使对待测机状态的监测更加准确;

控制机对待测机进行远程连接时,使用python的paramiko模块进行两种登录方式的尝试,避开了linux系统不同版本间兼容性的问题,使本发明所述远程测试方法的应用范围更加广泛。

附图说明

图1是本发明所述方法的流程图。

图2是本发明所述远程连接检测的流程图。

具体实施方式

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。本发明省略了对公知常识的描述以避免不必要地限制本发明。

如图1所示,本发明的一种基于python对服务器进行远程测试的方法,是在控制机上执行的python测试,包括控制机对多个待测机同时进行远程连接测试,python检测待测机是否进行有效连接,对通过连接测试的待测机发送连接命令,进行连接,控制机检测待测机的/proc/uptime记录的开机时间,进行待测机启动状态的判断,对于启动状态正常的待测机建立有效连接,开始远程测试。

具体来说,本发明所述方法包括以下s1-s4,4个步骤:

s1,控制机执行python测试,对多个待测机同时进行远程连接测试;

如图2所示,远程连接检测主要检测两方面:能否ping通,能否进行ssh连接。

检测能否ping通,所谓ping通是指两台设备之间网络是通的。考虑到机器间的启动时间差异,这里采用轮动式方法进行测试。每轮间隔30秒,总共20轮测试。这样做,一来可以节省连接时间,二来保证了在能够连接的情况下,肯定能够连接。

具体地,控制机每次ping发三个请求包,如果每次能够获取最少一个响应包,则视该待测机为可以ping通,标识ping通检测结果为pass,进行下一个待测机的检测。如果三个请求包都无法收到响应,则间隔30秒后进行第二次ping通请求,接收响应包,重复次数最多为20次(10分钟为系统启动最大限度时间)。

对于通过ping通检测的待测机检测能否ssh连接:

远程文件传输通过ssh通道,一来速度快,二来是加密传输。

在能够ping通的基础上检测能否进行ssh连接,这里直接远程密钥登陆,根据登陆结果进行下一步骤的动作,如果登陆出错,则提示错误信息,并中断程序且安全退出该待测机。

进一步地,控制机记录通过ping通测试的待测机返回响应包耗费的时间。

s2,对通过连接测试的待测机进行远程连接;

远程连接利用python的paramiko模块(paramiko是用python语言写的一个模块,遵循ssh2协议,支持以加密和认证的方式,进行远程服务器的连接)。paramiko模块支持密码登陆与rsa登陆两种方式。之所以需要做这两种尝试,是由于在不同的机器上ssh设置的权限不同,特别是root账户下,基本不支持密码登陆。因此对于具体针对待测机的连接方式这里需要做两种登陆尝试,分别为密码登陆尝试与rsa登陆尝试,因此有必要做兼容性处理

所述兼容性处理是指:linux系统下,不同发行版本之间差异很大,很多厂商也都做了自己的定制化系统,导致不同系统下,ssh协议的设置不同,部分系统不支持rsa登陆。这里正常的做法是第一次建立连接采用密码的方式,之后就采用rsa登陆的方式(rsa更快更稳定)。当二次登陆rsa无法建立连接时,应该再次启用密码登陆,而不能当作连接错误处理。

s3,控制机对连接的待测机进行状态检测,待测机状态正常的进入s4,对状态不正常的待测机中断测试;

连接待测机后,控制机检测/proc/uptime文件,该文件记录系统的运行时间,包括系统启动到现在的时间和系统的空闲时间。根据启动时间长短,判断是否启动异常。

具体地,linux系统下的待测机,/proc/uptime中记录了机器启动时长,对其进行检测,是为了与步骤s1中控制机记录通过ping通测试的待测机返回响应包耗费的时间进行比较,当二者差值过大时,意味着在系统启动过程中必然遇到了意料之外的事情,系统极有可能非正常启动,在这种情况下,就应该对待测机的测试进行中断,保留测试环境,确定属于正常情况下,再继续进行测试。

相较于手动测试,这种基于时间对比的方式,能够更加客观的体现测试结果

s4,当上面步骤s1-s3的结果都是pass时,控制机开始对待测机进行远程测试并在测试结束后将结果回传。

具体地,由于已经可以建立ssh连接,此时直接建立paramiko对象,然后根据待测机的ip、用户名和密码等信息,建立控制机与待测机之间的ssh连接,并传递测试命令并且在待测机上执行,控制机会向待测机发送多个测试命令,对应的,获取多个测试结果(无论正确与否),并将其回传至控制机,进行显示与保存。

对测试结果通过控制机的shell框进行显示,每个待测机有独立的shell显示框,对多个测试结果分开显示。

以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。

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