网络编程
位置:首页>> 网络编程>> Python编程>> python实现自动化上线脚本的示例

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

0
投稿

猜你喜欢

  • 前言 日益增长的分布式应用需求要求实现更好分布式的软件环境,不断推动着分布式技术的进步。Oracle数据复制是实现分布式数据环境的一种技术,
  • 应用正则表达式的全局匹配,可以匹配出字符出现的次数,比较这些次数,将最大的保存并返回。代码如下: var countMost = funct
  • 前言:随着编程语言的发展,Go 还很年轻。它于 2009 年 11 月 10 日首次发布。其创建者Robert Griesemer Rob
  • 前言上一篇介绍了服务端流式RPC,客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流的数据。本篇将介绍客户端流式R
  • PHP lcfirst() 函数实例把 "Hello" 的首字符转换为小写。:<?php echo lcfirst
  • 树型结构在我们应用程序中还是很常见的,比如文件目录,BBS,权限设置,部门设置等。这些数据信息都采用层次型结构,而在我们现在的关系型数据库中
  • 在爬虫百度地图的期间,就为它做了一个界面,运用的是PyQt5。得到意想不到的结果:# -*- coding: utf-8 -*-# Form
  • 我们利用linux系统中yum安装Apache+MySQL+PHP是非常的简单哦,只需要几步就可以完成,具体如下:一、脚本YUM源安装:1.
  • “你如何为成千上万的用户和页面提供CSS?” 这是Nicole Sullivan在她的在丹佛的Web Directions North 大会
  • 首先澄清一个应用场景问题。研究(1)中指出,对于结构复杂的网站,不少设计师们喜欢采用960固定宽度布局。但要注意的是,960并不是万能钥匙,
  • JavaScript组件打包模式js组件通常带着css image ,但这样使用起来可能会有些小麻烦,为了让组件足够的solo,有了把css
  • 大家已经从实际使用中了解了jquery这个javascript框架的强大,其实jquery更加强大的是可扩展。你可以编写自己的基于jquer
  • 年前在重写淘宝旺铺里的会员卡脚本的时候,无意中发现了一个有趣的事情。代码类似:var associative_array = new Arr
  • 0. 命令行参数通常,对于大型项目程序而言,执行程序的一个必要的步骤是正确处理命令行参数,这些命令行参数是提供给包含某种参数化信息的程序或脚
  • numpy的log和ln函数每次当我想用python实现ln函数时,下意识的就会输入错误的函数代码,这里特来记录一下关于numpy中的ln和
  • 最近在学习正则,一些比较有用的东西怕忘记,记下来,比较乱,想一条记录一条:正则表达式在线测试//匹配文本,这个偶尔比较好用,但是要小心字符中
  • response.getWriter().write() 功能:向前台页面显示一段信息。当在普通的url方式中,会生成一个新的页面来显示内容
  • 最近在内部讨论关于”完美三栏”的话题,看到一篇”In Search of the Holy Grail“,相当的好.故此翻译之.In Sea
  • 1 逻辑数据库和表的设计数据库的逻辑设计、包括表与表之间的关系是优化关系型数据库性能的核心。一个好的逻辑数据库设计可以为优化数据库和应用程序
  • 延迟是什么defer即延迟语句,极个别的情况下,Go才使⽤defer、panic、recover这种异常处理形式。defer可以延迟函数、延
手机版 网络编程 asp之家 www.aspxhome.com