#!/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