[本文出自天外归云的博客园]

问题

由于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脚本并获取输出,分析输出结果,如果一致则说明环境配置无误,返回当前配置的环境信息的集合;如果不一致则说明环境配置有误,返回当前配置的环境信息列表。

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

  1. win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结

    win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...

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

    软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...

  3. CAS单点登录(SSO)服务端的部署和配置---连接MySQL进行身份认证

    一.修改系统host,加入 127.0.0.1 server.test.com127.0.0.1 client1.test.com127.0.0.1 client2.test.com 二.安装grad ...

  4. linux下svn(subversion)服务端添加工程及配置权限

    linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...

  5. NTP时间同步 服务端 客户端 自动化安装配置

    NTP时间同步 服务端 客户端 自动化安装配置 原创内容 http://www.cnblogs.com/elvi/p/7657994.html #!/bin/sh #运行环境 centos6.cent ...

  6. 脚手架vue-cli系列五:基于Nightwatch的端到端测试环境

    不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试 ...

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

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎.目的是为了提供撰写可扩充网络程序,如Web服务.第一个版本由Ryan Dahl于2009年发布,后来,Jo ...

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

    本节向大家描述SVN1.6服务端和客户端安装配置步骤,随着SVN的快速发展,版本也进行了升级更新,本节就和大家一起学习一下SVN1.6服务端和客户端安装配置步骤,欢迎大家一起来学习.下面是具体介绍.1 ...

  9. linux安全配置检查脚本_v0.5

    看到网上有人分享了一些linux系统的基线检查脚本,但有些检查项未必适合自己或者说检查的不够完善, 计划按着自己的需求重新写一份出来,其中脚本的检查范围在不断更新中. 脚本内容: [root@loca ...

随机推荐

  1. HDU 2208 唉,可爱的小朋友(DFS)

    唉,可爱的小朋友 Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. 【C语言】练习2-8

     题目来源:<The C programming language>中的习题P38  练习2-1:  编写一个函数rightrot(x,n),该函数返回将x循环右移(即从最右端移除的位将从 ...

  3. GC那些事儿--Android内存优化第一弹

    引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Andro ...

  4. python packages prebuild for windows

    python  prebuild / precompiled packages for windows  by uci edu   在python windows环境下作业,有时候会碰上一些无厘头的问 ...

  5. Excel列添加单引号

    ="'"&A2&"',"   对A2列同步添加单引号

  6. Android Studio主题设置、颜色背景配置

    打开http://color-themes.com/有很多样式可供选择 导入方式 下载主题—xxx.jar 注意:如果我们下载下来的jar名字如果有空格,一定要把空格去掉,同时文件路径中不要含有中文 ...

  7. JavaScript面向对象:类、方法、属性

    JavaScript是一种基于对象的语言,与传统面向对象语言(C#.C++)相比,JavaScript中没有类的概念,其继承有两种基本形式:基于对象的继承和基于类型的继承(原型链继承).无论哪种形式的 ...

  8. 关于 IOS code signe 和 Provisioning Files 机制 浅析

    可以先读下这个译文. http://www.cnblogs.com/zilongshanren/archive/2011/08/30/2159086.html 读后,有以下疑惑. 在mac 机上生成的 ...

  9. 【SSH】Hibernate关联映射

    一对一关联映射 一对一主键关联映射    一句话:不加字段.主键既是主键又是外键. 一对一单向主键关联映射 配置: <span style="font-family:KaiTi_GB2 ...

  10. HTTP、 TCP、 IP、 Socket、 XMPP

    网络自下而上分为: 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 HTTP:应用层协议,主要解决如何包装数据 XMPP:应用层协议 TCP:传输层协议,主要解决数据如何在网络中传输 IP ...