python实现自动化上线脚本的示例


Posted in Python onJuly 01, 2019

程序说明:

本程序实现将开发程序服务器中的打包文件通过该脚本上传到正式生产环境(注:生产环境和开发环境不互通)

程序基本思路:

将开发环境中的程序包拷贝到本地堡垒机

将程序包进行解压

获得解压后的文件通同步到生产服务器上

主要知识点:python库os.system()的基本使用 利用python调用xshell命令

程序使用方法:

python addline.py 开发主机ip 程序包 目标主机ip 上传目录 上传编号

如:python addline.py 240 /home/shaojinlong/2018-7-17/activityIqiyi_766bb10bd811e40732cf79dffde9a904_20180717.tar.gz 165 /home/zhouja01 190122

具体程序:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time  : 2018/7/17 20:56
# @Author : Zhou Jiaan
# @File  : addline.py
import os
import sys
import re
import time
##使用方法:
# python addline.py 240 filename 165 directory runnum
## 如:python addline.py 240 /home/shaojinlong/2018-7-17/activityIqiyi_766bb10bd811e40732cf79dffde9a904_20180717.tar.gz 165 /home/zhouja01 190122


##拷贝文件
def cpfile(source_host,source_dir, runnum):
  os.system("mkdir -p /sx/%s" % (runnum))
  os.system("scp %s:%s /sx/%s " % (source_host,source_dir, runnum))

##解压文件
def tarfile(source_dir,runnum):

  target_test = re.split(r'/', source_dir)
  print(target_test[-1])
  os.system(
    "tar zxvf /sx/%s/%s -C /sx/%s/" % (runnum,target_test[-1], runnum))
  time.sleep(1) #休眠一秒 因为同步脚本获取日志需要一秒钟

# 同步文件
def syncfile(filename, runnum,target_host):

  os.system("ssh %s 'mkdir -p /home/zhouja01/sx/%s'" % (target_host,runnum))
  os.system("scp -r /sx/%s/%s %s:/home/zhouja01/sx/%s/" %
       (runnum, filename,target_host,runnum))
  # os.system("ssh 165 'sudo -u apps sh /home/zhouja01/bcp_web.sh /home/zhouja01/sx/%s/%s /home/apps/ananetest/%s'" %
  #      (runnum, filename, filename))

def delfile(runnum):
  os.system("mv /sx/%s /sx/wc"%(runnum))

def main():
  source_host=sys.argv[1] #源主机ip
  source_dir=sys.argv[2] #源主机文件
  target_host=sys.argv[3] #目标主机ip
  target_dir=sys.argv[4] #目标主机文件
  runnum=sys.argv[5] #oa流水号

  cpfile(source_host,source_dir,runnum) #将文件从源主机拷贝到堡垒机
  tarfile(source_dir,runnum) #解压文件

#获得解压文件名
  with open('/var/log/sx.log', 'r') as f:
    lines = f.readlines()
    last_line = lines[-1]
    print(last_line)
    filename = re.split(r'/', last_line)
    print(filename[3])

  syncfile(filename[3], runnum,target_host) #将文件同步到目标主机
  delfile(runnum) #将堡垒机文件移动到完成目录

if __name__ == '__main__':
  main()

以上这篇python实现自动化上线脚本的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python def函数的定义、使用及参数传递实现代码
Aug 10 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
Python中functools模块的常用函数解析
Jun 30 Python
python实现批量监控网站
Sep 09 Python
Python3 queue队列模块详细介绍
Jan 05 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
Django中的文件的上传的几种方式
Jul 23 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
Python threading模块condition原理及运行流程详解
Oct 05 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
在Python中构建增广矩阵的实现方法
Jul 01 #Python
django框架实现模板中获取request 的各种信息示例
Jul 01 #Python
Python整数对象实现原理详解
Jul 01 #Python
python实现两个dict合并与计算操作示例
Jul 01 #Python
Python字符串对象实现原理详解
Jul 01 #Python
Python转换时间的图文方法
Jul 01 #Python
Python列表对象实现原理详解
Jul 01 #Python
You might like
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php实现的简单检验登陆类
2015/06/18 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
PHP 8新特性简介
2020/08/18 PHP
js 学习笔记(三)
2009/12/29 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
完善的jquery处理机制
2016/02/21 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
[29:59]完美世界DOTA2联赛PWL S3 Forest vs access 第二场 12.11
2020/12/13 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
什么是python的必选参数
2020/06/21 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
热爱祖国演讲稿
2014/05/04 职场文书
欢迎领导标语
2014/06/27 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
python井字棋游戏实现人机对战
2022/04/28 Python