zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    list拖动
    android sdk
    AwwwB推荐网站全盘克隆
    WPF中的容器控件——WrapPanel
    WPF中的容器控件——StackPanel
    MFC应用程序中指针的使用
    排序算法之插入排序
    转:MFC 常用语句集锦
    【转】MFC学习总结
    排序算法之冒泡排序
  • 原文地址:https://www.cnblogs.com/zhangzihong/p/8117921.html
Copyright © 2011-2022 走看看