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中datetime常用时间处理方法
Jun 15 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
django框架F&Q 聚合与分组操作示例
Dec 12 Python
使用python 对验证码图片进行降噪处理
Dec 18 Python
python实现ftp文件传输功能
Mar 20 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
Jun 05 Python
pandas数值排序的实现实例
Jul 25 Python
Python 实现Mac 屏幕截图详解
Oct 05 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
arcgis for js 修改infowindow样式的方法
2016/11/02 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
python访问系统环境变量的方法
2015/04/29 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
python使用psutil模块获取系统状态
2016/08/27 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
行政总监岗位职责
2013/12/05 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
2014年教师培训的自我评价
2014/01/03 职场文书
父母对孩子的寄语
2014/04/09 职场文书
地理科学专业自荐信
2014/09/01 职场文书
公司总经理岗位职责
2015/04/01 职场文书
律师函格式范本
2015/05/27 职场文书
团拜会主持词
2015/07/04 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers