python实现自动化上线脚本的示例
作者:Ian_安安 发布时间:2021-02-01 05:14:49
标签:python,自动化,脚本
程序说明:
本程序实现将开发程序服务器中的打包文件通过该脚本上传到正式生产环境(注:生产环境和开发环境不互通)
程序基本思路:
将开发环境中的程序包拷贝到本地堡垒机
将程序包进行解压
获得解压后的文件通同步到生产服务器上
主要知识点: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()
来源:https://blog.csdn.net/sinat_34789167/article/details/81100406


猜你喜欢
- Python如何将一个长图制作成一个视频要将一个长图制作成视频,你可以使用Python中的一些库来完成这个任务。下面是一种基本的方法,使用P
- 本文实例为大家分享了Python Pygame实现俄罗斯方块的具体代码,供大家参考,具体内容如下源码:# coding : utf-8#:
- 前言:在做一个商城项目的时候,需要实现商品搜索功能。说到搜索,第一时间想到的是数据库的 select * from tb_sku where
- 前言:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。官网给出
- 前言本文主要给大家介绍的是关于在Python3使用PyMongo的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍:Mong
- 本文实例讲述了php常用字符串长度函数strlen()与mb_strlen()用法。分享给大家供大家参考,具体如下:int strlen (
- 随着访问量的增加,对于一些比较耗时的数据库读取操作,一般采用将写入与读取操作分开来缓解数据库的压力,数据库引擎一般采用Master/Slav
- 前言:索引下推(ICP)是针对MySQL使用索引从表中检索数据行的情况的优在没有索引下推的情况下,MySQL通过存储引擎遍历索引来定位表中的
- server:#coding=utf-8from BaseHTTPServer import BaseHTTPRequestHandleri
- Python实现八大排序算法,具体内容如下1、插入排序描述插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个
- 前言本篇来学习在pytest中使用yaml编写测试用例项目结构conftest.py只需在 conftest.py 即可实现使用yaml编写
- 本节内容深浅拷贝循环方式字典常用方法总结一、深浅拷贝列表、元组、字典(以及其他)对于列表、元组和字典而言,进行赋值(=)、浅拷贝(copy)
- python可以返回多个值,确实挺方便函数里的return只能返回一个值,但是返回类型是没是限制的因此,我们可以“返回一个 tuple类型,
- 本文实例讲述了PHP对象克隆clone用法。分享给大家供大家参考,具体如下:浅克隆:只是克隆对象中的非对象非资源数据,即对象中属性存储的是对
- Math 对象js 给我们提供了一些操作数字的方法也是一种数据类型 是复杂数据类型Math对象的通用语法: Math.xxx()random
- enumerate函数用于遍历序列中的元素以及它们的下标。enumerate函数说明:函数原型:enumerate(sequence, [s
- 本文介绍了Vue生命周期和手动挂载,分享给大家,具体如下:1、vue的生命周期: 2、$mount()手动挂载 当Vue实例没有el属性时,
- 我就废话不多说了,还是直接看代码吧!#!/usr/bin/env python3#coding = utf-8def is_triangle
- 大概来介绍一下 Django Allauth 改造的期间遇到的一些问题和改造方法,在此之前我只想说——Django Allauth 是屑。为
- 一、MySQL数据库的实例管理器概述:1、MySQL数据库的实例管理器(IM)是通过TCP/IP端口运行的后台程序,用来监视和管理MySQL