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之不要红头文件(2)
Sep 28 Python
用Python中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
python enumerate函数的使用方法总结
Nov 15 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
python字典一键多值实例代码分享
Jun 14 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
在python中画正态分布图像的实例
Jul 08 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
Python request post上传文件常见要点
Nov 20 Python
详解python的内存分配机制
May 10 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
javascript写的一个链表实现代码
2009/10/25 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
python实现计算资源图标crc值的方法
2014/10/05 Python
Python中的下划线详解
2015/06/24 Python
Python模拟三级菜单效果
2017/09/11 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
tensorflow识别自己手写数字
2018/03/14 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
为什么使用接口?
2014/08/13 面试题
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
逃课检讨书范文
2015/05/06 职场文书
医院党建工作总结2015
2015/05/26 职场文书