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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
Python中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
Python基础之函数用法实例详解
Sep 10 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
django query模块
Apr 20 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
Python绘制频率分布直方图的示例
Jul 08 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
python 提取html文本的方法
May 20 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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
Python3基础之函数用法
2014/08/13 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
python中while和for的区别总结
2019/06/28 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python数值基础知识浅析
2019/11/19 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
python开发入门——set的使用
2020/09/03 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
如何写出好的Java代码
2014/04/25 面试题
大学生毕业自我鉴定范文
2014/02/03 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
作风转变心得体会
2014/09/02 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
详解MySQL集群搭建
2021/05/26 MySQL