python自动发布应用脚本

#!/usr/bin/python env
# -*- coding: utf-8 -*-
import os, sys, paramiko, time

date = time.strftime("%Y%m%d%H%M%S", time.localtime())


class Connection(object):
    def __init__(self, ip, user, remote_file, port=22, key='/root/.ssh/id_rsa'):
        self.ip = ip
        self.user = user
        self.port = int(port)
        self.remote_file = remote_file
        self.private_key = paramiko.RSAKey.from_private_key_file(key)
        self.client = paramiko.SSHClient()
        self.client.load_system_host_keys()
        self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
        self.client.connect(hostname=self.ip,
                            port=self.port,
                            username=self.user,
                            pkey=self.private_key)
        self.transport = self.client.get_transport()
        self.sftp = paramiko.SFTPClient.from_transport(self.transport)

    def downlowd(self,app):

        print "========download Application==========="
        os.system("cd /opt/o2m_gsr_700_test && svn checkout  http://10.128.XX.XX/rss/O2M1114120001/04_软件实现/o2m700/GSR/%s" %app)

    def mvn(self,app):
        print "=======mvn Application================="
        os.system("cd /opt/o2m_gsr_700_test/%s &&  mvn clean install -Dmaven.test.skip=true" %app)

    def upload(self, local_dir):
        self.sftp.put(local_dir, self.remote_file)

    def Backup(self, backup_cmd):
        print "==========backup application==========="
        stdin, stdout, stderr = self.client.exec_command(backup_cmd)
        result = stderr.read()
        error = stderr.read()
        if not error:
            print "host:%s 正在备份" % self.ip
        else:
            print error

    def stop(self, cmd):
        print "========stop application============"
        stdin, stdout, stderr = self.client.exec_command(cmd)
        result = stderr.read()
        error = stderr.read()
        if not error:
            print "host:%s 该应用已停止" % self.ip
        else:
            print error

    def start(self, cmd):
        print "=======start application============="
        stdin, stdout, stderr = self.client.exec_command(cmd)
        result = stderr.read()
        error = stderr.read()
        if not error:
            print "host:%s 该应用已启动." % self.ip
        else:
            print error

    def __del__(self):
        self.client.close()


if __name__ == "__main__":
    ip = ['10.128.XX.XX', '10.128.XX.XX']
    user = 'o2muser'
    filename = "site-0.0.1-SNAPSHOT.jar"
    remote = '/home/o2muser/gome/site/%s' % filename
    remote1 = '/home/o2muser/gome/site/'
    count = 0

    if sys.argv[1] == "site":
        for i in ip:
            r = Connection(i, user, remote)
            if count == 0:
                r.downlowd("site")
                r.mvn("site")
            r.stop("ps -ef | grep site-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'|xargs kill -9")
            r.Backup("mv %s %s" % (remote, remote + date))
            r.upload("/opt/o2m_gsr_700_test/site/target/site-0.0.1-SNAPSHOT.jar")
            r.start("java -jar -Xms30720m -Xmx30720m -Xmn16348m -Xss3072k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m /home/o2muser/gome/site/site-0.0.1-SNAPSHOT.jar --spring.profiles.active=700 >/dev/null &")
            count=count+1
原文地址:https://www.cnblogs.com/zhangzihong/p/8117921.html