python+paramiko库+svn写的自动化部署脚本

第一篇博文

直接开门见山的说了。

这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞。

一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一个脚本实现自动化部署,正巧最近在学习python,就用python写一个自动化得脚本吧。

1.首先是环境:SVN的版本控制,windows的本地,linux服务器。

2.思路:应用python,代入cmd脚本,加上强大的python库来做这件事。

3.再详细的思路:

        第一步:利用SVN的cmd下得脚本,获取到对应版本修订号下修改log。用正则表达式取出修改后的文件名及路径

        第二步:因为是java程序,这样取出来的是xx.java文件,但需要部署上去的是编译后的xx.class文件,所以需要取到本地编译过后文件。

        第三步:安装python paramiko库.

        第四步:just build and run it

  1 __author__ = ‘Administrator‘
  2 # coding:utf8
  3 import os
  4 import re
  5
  6 url = "svn://192.168.30.111/ZXJY_ALL"
  7 localPath = ‘E:\quanli360\项目‘
  8 vision_num = raw_input(‘type a vision num: ‘)
  9
 10 # 需要运行SVN的命令
 11 svn_command = ‘svn log ‘ + localPath + ‘\p2p_standard_2.0_quanli -r ‘ + vision_num + ‘ -v‘
 12 #转码让system执行得时候可以适应中文
 13 svn_command = svn_command.decode("utf-8").encode("gbk")
 14 print ‘run shell is===‘, svn_command
 15 #执行svn_command
 16 a = os.popen(svn_command).read()
 17
 18 print a
 19 #正则取出版本号得更新文件路径
 20 print "取出文件路径:"
 21 def regPath(strPath):
 22     reg = ‘p2p_standard_2.0_quanli\\s*\\w*\\W*\\S*‘
 23     regCom = re.compile(reg)
 24     pathList = re.findall(regCom, strPath)
 25     #print pathList
 26     return pathList
 27
 28 res = regPath(a)
 29 print ‘==‘*60
 30
 31 def regPathC(strPath):
 32     reg = ‘\\com\\\\s*\\w*\\W*\\S*‘
 33     regCom = re.compile(reg)
 34     pathList = re.findall(regCom, strPath)
 35     #print pathList
 36     return pathList
 37
 38 def regPathS(strPath):
 39     reg = ‘\\site\\\\s*\\w*\\W*\\S*‘
 40     regCom = re.compile(reg)
 41     pathList = re.findall(regCom, strPath)
 42     #print pathList
 43     return pathList
 44
 45 #sftp命令上传至服务器,<目前只能先删除待更新文件,再上传文件过去>
 46 import paramiko
 47
 48 username = ‘work‘
 49 password = ‘Ex42tko4{[email protected]{^‘
 50 hostname = ‘118.244.204.239‘
 51 port = 2022
 52
 53
 54 def deployServer(locath, objPath):
 55     try:
 56         t = paramiko.Transport((hostname, port))
 57         t.connect(username=username, password=password)
 58         sftp = paramiko.SFTPClient.from_transport(t)
 59         #rename
 60         sftp.remove(objPath)
 61         print ‘Now start‘
 62         sftp.put(locath, objPath)
 63         print ‘good‘
 64         print ‘==‘*60
 65         t.close();
 66     except Exception, e:
 67         import traceback
 68         traceback.print_exc()
 69         try:
 70             t.close()
 71         except:
 72             pass
 73
 74 # 如果一个版本号下多个文件挨个取出并补全路径,执行部署
 75 for x in range(len(res)):
 76     realLocPath = localPath + ‘\\‘ + res[x]
 77     realLocPath = realLocPath.replace("/", "\\")
 78     print (realLocPath)
 79     print ‘==‘*60
 80     if realLocPath.__contains__("\\com\\"):
 81         cutStr = regPathC(realLocPath)
 82         cutStr = ‘‘.join(cutStr)
 83         #匹配本地编译后的文件
 84         cutStr = cutStr.replace(".java", ".class")
 85         realLocPath = "E:\\apache-tomcat-6.0.37\\webapps\\archer\\WEB-INF\\classes\\" + cutStr
 86         cutStrL = cutStr.replace("\\", "/")
 87         objectPath = "/home/work/tomcat_instances/quanli360.com-instance-3/webapps/archer/WEB-INF/classes/" + cutStrL
 88         print ‘Source:-->‘,realLocPath
 89         print ‘Server:-->‘,objectPath
 90         deployServer(realLocPath,objectPath)
 91     elif realLocPath.__contains__("\\site\\"):
 92         print ‘start site‘
 93         cutStr = regPathS(realLocPath)
 94         print cutStr
 95         cutStr = ‘‘.join(cutStr)
 96         realLocPath = ‘E:\\apache-tomcat-6.0.37\\webapps\\archer\\site‘ + cutStr
 97         objectPath = ‘/home/work/tomcat_instances/quanli360.com-instance-3/webapps/archer/‘ + cutStr
 98         cutStrL = cutStr.replace("\\", "/")
 99         objectPath = ‘‘ + cutStrL
100         print cutStr,realLocPath, objectPath
101         # deployServer(realLocPath,objectPath)
102     else:
103         print ("no contains")
104     # deployLoc(realLocPath)
105
106 print ‘==‘*60
时间: 2024-10-09 01:30:37

python+paramiko库+svn写的自动化部署脚本的相关文章

Jenkins持续集成-自动化部署脚本的实现《python》

读者须知:1.本手记本着记续接前面的两张手记内容整理2.本手记针对tomcat部署测试环境实现 最近工作比较繁忙,导致这章一直拖延,没有太抽出时间来总结.要实现Jenkins端的持续集成,其实在CI服务配置端很容易,难点呢?就是如何实现自动化的部署.我的脚本设计就是为了解决以下难题: 难点一.如何使得自动化部署脚本更通用 我用的脚本,依赖依赖一个配置文件的模块化,让每一个应用业务模块更加通用.自动化所执行的命令呢?我也是设计想法本着更加通用平台的原则,至少对于tomcat+java or jav

Hadoop自动化部署脚本

摘自:http://www.wangsenfeng.com/articles/2016/10/27/1477556261953.html 1 概述 最近自己写了一个Hadoop自动化部署脚本,包括Hadoop集群自动化部署脚本和Hadoop增加单节点自动化部署脚本.需要快速部署Hadoop集群的童鞋可以使用该脚本.这些脚本我在用5台虚拟机进行了测试,如果在使用中还有bug,欢迎指出.本文主要介绍Hadoop集群自动化部署脚本,安装的Hadoop版本为2.6.0. 2 依赖 安装Hadoop2.6

设置ssh免密码登录脚本(hadoop自动化部署脚本一)

设置ssh免密码登录脚本(飞谷云大数据自动化部署脚本一) 1.#!/bin/sh2.#important note:this script is expected to run on master node3.PWD=hdp4.USER=hdp5.SSHDIR=/home/dhp/.ssh6.7.#create temp dir to store id_pub file8.mkdir $SSHDIR/sshtmp9.10.HOST=(master slave01 slave02);11.12.f

MySQL5.7多实例自动化部署脚本

一.安装说明 mysql5.7.10_onekey_install.sh自动化部署脚本支持mysql5.7.10初始化安装,多实例创建,且使用经过优化后的my.cnf配置文件和mysql.server启动脚本,该SHELL脚本在CentOS6.5_x86_64操作系统测试通过.部署示意图如下: 1.安装方式 需要准备的文件如下,放到同一个目录下,然后执行shell脚本 执行方式: ./mysql5.7.10_onekey_install.sh 3307 端口自定义,要求整数,且不和服务器端口冲突

自动化部署脚本--linux执行sh脚本

自动化部署脚本文件目录: 运行主程序:./install.sh #!/bin/bash SCRIPTPATH=$(cd "$(dirname "$0")"; pwd) Install_log=$SCRIPTPATH/install_log.txt echo "***start install***" > $Install_logecho " workspace is $SCRIPTPATH" | tee -a "

软件自动化部署脚本

2017-11-16 20:19:53 1:设计思路: (1)软件自动化部署脚本,即在一台虚拟机运行脚本,就将其他虚拟机上面的软件安装好了: (2)而前提是自己的机器搭建好了yum网络版仓库(本地yum仓库的安装配置,如果没网了,做一个局域网内的yum仓库),这样在一台机器上面运行脚本,其他机器可以从这台机器上下载[先安装wget命令],安装[即解压缩的操作],配置环境变量等等[前提是脚本也实现了免密登陆操作实现]: (3)而这些操作可以分成两个过程,如果配置好免密登陆ssh登录,然后使用boo

Linux下搭建jenkins+svn+http+maven自动化部署

服务器设置: 卸载redhat的yum,安装centos的yum,配置第三方yum 1.删除redhat原有的rpm -qa |grep yum |xargs rpm -e yum --nodeps 2.下载yum安装文件,如果下载时找不到文件,http://mirrors.163.com/centos/6/os/x86_64/ wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.27-14.el6.centos.noa

Jendins+svn+maven+tomcat自动化部署环境搭建

在一个Tomcat集群的架构体系中,需要一个自动发布平台,对于大的公司都是自己建设,而对于中小公司一般采取的使用开源搭建,所以接下来详细介绍基于Jendins+svn+maven+tomcat的自动化部署环境搭建. 1. jenkins安装(svn,maven,tomcat已安装): 将jenkins.war拷贝到tomcat的webapps目录下 访问ip+端口/jenkins即安装成功: 2. 配置: 全局环境配置: 在jenkins中进入系统管理页面,选择系统管理,配置页面中的JAVA_H

[MySQL-MM] 生产环境自动恢复MM中一台M2库的过程,分享从零开始写的自动化重建脚本以及思路 (转)

必须是MM架构,而且一台主库M1是完好无损的,一台主库M2可以根据M1主库来进行重建:如果MS架构,自己可以稍微做一下脚本修改动作,也能使用,架构如下图所示: 3  总体思路,建立主脚本a_build_rep.sh 思路分为13个步骤,如a_build_rep.sh脚本中的备注 [python] view plain copy print? #!/bin/bash set -x set -e set -u #(1)准备好目录以及全局变量 BACKUP_FOLDER=/mysqldata/shar