服务端测试环境hosts配置检查脚本

问题

由于A测试环境和B测试环境相互耦合,B测试环境切换导致我方测试环境需要更改后台服务器的响应配置。若多台服务器中有一台服务器没有更改配置,则在测试过程中将会出现问题。届时排查由于环境配置不统一引起的环境问题将会费时费力。

思考

测试环境之间的关联配置就是hosts的配置,我们只需要知道A测试环境中各个服务器上的hosts文件中配置的B环境的hosts是否一致即可得出结论。

解决方案

在A测试环境服务器端各个机器的根目录下均安放hosts检查脚本hosts_check.py,内容如下:

#!/usr/bin/python
# -*- coding:utf-8 -
B_server_ip_1 = "B env ip 1"
B_server_ip_2 = "B env ip 2"
tip_1 = "isXXX"
tip_2 = "isnotXXX"

with open(‘/etc/hosts‘) as f:
    for line in f.readlines():
        rule1 = "B env name" in line
        rule2 = not line.startswith("#")
        rule3 = B_server_ip_1 in line
        rule4 = B_server_ip_2 in line
        if rule1 and rule2:
            if rule3:
                print(tip_1)
            if rule4:
                print(tip_2)

其中假设B环境有两台server,他们的ip分别为B_server_ip_1和B_server_ip_2,对于每台server上的hosts文件进行检查,找出其中对应B环境名(hosts name,这里的B env name)的行,找出没被注释掉的行,假如该行中包含B_server_ip_1则对应的是打印tip_1,包含B_server_ip_2则对应的是打印tip_2。

在本地端执行检测脚本,内容如下:

# coding:utf-8
import base64
import paramiko

class SSH_Handler:
    client = paramiko.SSHClient()
    def __init__(self,ssh_key_path,server_ip,server_port,username):
        ssh_key = paramiko.RSAKey.from_private_key_file(ssh_key_path)
        self.client.load_system_host_keys()
        self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.client.connect(server_ip,port=server_port,username=username,pkey=ssh_key)
    def exec_command(self,command):
        stdin, stdout, stderr = self.client.exec_command(command)
        ret = []
        for line in stdout:
            ret.append(line.strip())
        return ret
    def __del__(self):
        self.client.close()

‘‘‘
    ssh_key_path:OpenSSH格式的用来连接服务器的私钥路径
    server_ip:要连接的服务器的ip地址
    server_port:要连接的服务器的端口
    username:登录服务器的用户名
    command:在服务器端要执行的命令
‘‘‘
if __name__ == ‘__main__‘:
    ssh_key_path = ‘E:\\sshKey‘
    server_ips = [‘A env ip 1‘,‘A env ip 2‘,‘A env ip 3‘]
    server_port = xxxx
    username = ‘username‘
    command = ‘python hosts_check.py‘
    results = []
    s = set()
    for server_ip in server_ips:
        result = SSH_Handler(ssh_key_path,server_ip,server_port,username).exec_command(command)[0]
        results.append(server_ip+":"+result)
        s.add(result)
    if len(s) ==1:
        print(s)
    else:
        print(results)

在执行上面的脚本前需要在本地python3环境安装paramiko,用来远程ssh服务器。需要弄清连接服务器私钥存放的地址,在SecureCRT中可以通过Tools中的工具将秘钥转换为OpenSSH格式的私钥,这个路径对应的就是OpenSSH格式私钥的路径,这里对应的文件为sshKey。这里假设A环境有三台服务器,对每台服务器上分别执行hosts_check.py脚本并获取输出,分析输出结果,如果一致则说明环境配置无误,返回当前配置的环境信息的集合;如果不一致则说明环境配置有误,返回当前配置的环境信息列表。

时间: 2024-10-18 15:46:16

服务端测试环境hosts配置检查脚本的相关文章

[转载]SharePoint 2013测试环境安装配置指南

软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注:安装之前,需要各个服务器的IP地址,机器名称设置好,并且已经加入到域中. 一 安装AD域控制器 1. 添加AD服务 a) 打开服务器管理器,选择[添加角色和功能] b) 在[开始之前]页面直接点击[下一步] c) 选择[基于角色或基于功能的安装]后,点击[下一步] d) 选择[从服务器池中选择服务器

SVN1.6服务端和客户端安装配置指导

本节向大家描述SVN1.6服务端和客户端安装配置步骤,随着SVN的快速发展,版本也进行了升级更新,本节就和大家一起学习一下SVN1.6服务端和客户端安装配置步骤,欢迎大家一起来学习.下面是具体介绍.1.软件下载下载SVN1.6服务器程序.http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91[注意]如果之前已经安装了TortoiseSVN客户端,必须选择与之配套的SVN服务端版本,否则会出现各种问题,可以从Tor

游戏服务端pomelo完整安装配置过程

游戏服务端pomelo安装配置 一.安装环境 debian 7.0 amd64 二.安装需要的组件 1.安装nodejs 注:debian下nodejs没有相应的apt包,所以无法用apt-get安装,只能通过nodejs的源码包安装, 这里有比较全的其他系统环境下安装nodejs的方式https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager a.安装所需的组件,python g++ #apt-get i

Node.js是一个事件驱动I/O服务端JavaScript环境

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎.目的是为了提供撰写可扩充网络程序,如Web服务.第一个版本由Ryan Dahl于2009年发布,后来,Joyent雇用了Dahl,并协助发展Node.js. 其他编程语言的类似开发环境,包含Twisted于Python,Perl Object Environment于Perl,libevent于C,和EventMachine于Ruby.与一般JavaScript不同的地方,Node.js并不是在Web浏

vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试,并为回归测试提供反馈. 端到端测试又简称E2E(End-To-End test)测试,它不同于单元测试侧重于检验函数的输出结果,端到端测试将尽可能从用户的视角,对真实系统的访问行为进行仿真.对于Web应用来说,这意味着需要打开浏览器.加载页面.运行JavaScript,以及进行与DOM交互等操作.

2.移动端测试环境准备

1.第一阶段移动端测试环境搭建 移动端自动化测试的基础环境配置 1.1 安装Java环境 Android应用为例讲解,需要安装java环境 1.2 SDK环境 Android依赖SDK的环境 1.3 模拟器环境 考虑大家连接真机不方便,所以采用模拟器替代 1.1.Java环境安装 1.1.1 安装JDK1.8 运行jdk-8u151-windows-x64.exe文件,默认安装即可(例如我的安装目录:C:\Program Files\Java\jdk1.8.0) 1.1.2 配置java环境变量

rsync 服务端和客户端 简单配置

环境:Centos 6.9 两台服务器,A(192.168.223.129) 和 B(192.168.223.130).A 作为服务端,B作为客户端从A服务器同步目录.把A的/usr/src 目录下的内容同步到B的/rsync/ 目录. 首先配置下epel 源: rpm -ivh https://mirrors.ustc.edu.cn/epel/epel-release-latest-6.noarch.rpm 全都先安装下rsync: yum install rsync 然后,A 先创建/etc

Dnscrypt_wrapper 服务端的安装与配置

之前我介绍了为了科学访问互联网其中非常重要的一环 DnsCrypt_Proxy,这其实是客户端.dnscrypt-proxy 安装好后会自带提供一些国外的公开的dnscrypt-wrapper服务,所以dnscrypt的服务端就是 dnscrypt-wrapper .dnscrypt提供了自主搭建dnscrypt-wrapper服务的程序以及教程. 我这里就来简要说一下 dnscrypt-wrapper 服务端的搭建用法. 前情提要: 服务端系统平台:CentOS 6 x86_64 dnscry

ntp服务端和客户端同步配置

ntp服务端配置(centos7) 一.打开UDP123端口INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT.然后重启防火墙服务器  service firewalld restart 或直接关闭防火墙service firewalld stop,    chkconfig firewalld off 二.查看有没有ntp服务rpm –qa|grep ntp,如果没有则安装yum install –y ntp 三.要同步