服务端测试环境hosts配置检查脚本
[本文出自天外归云的博客园]
问题
思考
解决方案
#!/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配置检查脚本的更多相关文章
- win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结
win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...
- [转载]SharePoint 2013测试环境安装配置指南
软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...
- CAS单点登录(SSO)服务端的部署和配置---连接MySQL进行身份认证
一.修改系统host,加入 127.0.0.1 server.test.com127.0.0.1 client1.test.com127.0.0.1 client2.test.com 二.安装grad ...
- linux下svn(subversion)服务端添加工程及配置权限
linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...
- NTP时间同步 服务端 客户端 自动化安装配置
NTP时间同步 服务端 客户端 自动化安装配置 原创内容 http://www.cnblogs.com/elvi/p/7657994.html #!/bin/sh #运行环境 centos6.cent ...
- 脚手架vue-cli系列五:基于Nightwatch的端到端测试环境
不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试 ...
- Node.js是一个事件驱动I/O服务端JavaScript环境
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎.目的是为了提供撰写可扩充网络程序,如Web服务.第一个版本由Ryan Dahl于2009年发布,后来,Jo ...
- SVN1.6服务端和客户端安装配置指导
本节向大家描述SVN1.6服务端和客户端安装配置步骤,随着SVN的快速发展,版本也进行了升级更新,本节就和大家一起学习一下SVN1.6服务端和客户端安装配置步骤,欢迎大家一起来学习.下面是具体介绍.1 ...
- linux安全配置检查脚本_v0.5
看到网上有人分享了一些linux系统的基线检查脚本,但有些检查项未必适合自己或者说检查的不够完善, 计划按着自己的需求重新写一份出来,其中脚本的检查范围在不断更新中. 脚本内容: [root@loca ...
随机推荐
- Install MySQL 5.7 on Fedora 25/24, CentOS/RHEL 7.3/6.8/5.11
MySQL is a relational database management system (RDBMS) that runs as a server providing multi-user ...
- 【JQuery】jQuery中的常用方法小结
1.层级选择器 后代选择器 "父元素 后代元素" 比如:$("div p") 选取div元素下所有的p元素 子元素选择器 "父元 ...
- Linux下安装LAMP(Apache+PHP+MySql)和禅道
1.更新yum源: yum update -y 2.安装Apache+PHP+MySql yum install httpd mysql-devel mysql-server mysql-php ph ...
- python对文件操作
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
- 【struts2】struts2的execAndWait拦截器使用
使用execAndWait拦截器可以在等待较长时间的后台处理中增加等待页面.实现如下图所示的效果: 1)struts.xml主要部分 <action name="test" ...
- Groovy 学习手册(4)
6. 领域特定语言 Groovy 有许多特性,使它非常适合写DSL(领域特定语言).这些特性包活: 具有委托机制的闭包: 点号(.)和语句末尾的分号(;)是可选的: 运算符的重载(例如,加号,减号等) ...
- webstorm 设置js或者html文件自动缩进为4个空格不生效
设置 tab 和自动缩进为4个空格不生效,解决办法如下 设置代码缩进 1. 依次打开files —- settings —- Editor —- Code Style —- JavaScript 2. ...
- android check box 自定义图片
http://blog.csdn.net/competerh_programing/article/details/7417074
- 在linux中配置环境变量
JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 根据Linux ...
- git 修改历史提交信息
当你不小心,写错了提交的注视/信息,该如何处理呢.理论上,SCM是不应该修改历史的信息的,提交的注释也是. 不过在git中,其commit提供了一个--amend参数,可以修改最后一次提交的信息. ...