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中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
详解C++编程中一元运算符的重载
Jan 19 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
python实现三次样条插值
Dec 17 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python版中国省市经纬度
Feb 11 Python
Python logging日志库空间不足问题解决
Sep 14 Python
Python urllib3软件包的使用说明
Nov 18 Python
python神经网络编程之手写数字识别
May 08 Python
Python中使用subprocess库创建附加进程
May 11 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
ThinkPHP php 框架学习笔记
2009/10/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
安装vue-cli报错 -4058 的解决方法
2017/10/19 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
Python and、or以及and-or语法总结
2015/04/14 Python
Python协程的用法和例子详解
2017/09/09 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
Python使用python-docx读写word文档
2019/08/26 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
PyQt5实现画布小程序
2020/05/30 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
历史专业大学生职业生涯规划书
2014/03/13 职场文书
大学班级计划书
2014/04/29 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
nginx配置指令之server_name的具体使用
2022/08/14 Servers