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学习资料
Feb 08 Python
说一说Python logging
Apr 15 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
Python日志模块logging基本用法分析
Aug 23 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python直接获取API传递回来的参数方法
Dec 17 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 Python
详解用Python把PDF转为Word方法总结
Apr 27 Python
pytorch锁死在dataloader(训练时卡死)
May 28 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
基于mysql的论坛(2)
2006/10/09 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python中动态创建类实例的方法
2017/03/24 Python
python求质数的3种方法
2018/09/28 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
货车司机岗位职责
2014/03/18 职场文书
大学生就业意向书范文
2014/04/01 职场文书
关于责任的演讲稿
2014/05/20 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
工作证明格式范文
2015/06/15 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书