# -*- coding:utf-8 _*-
"""
@author:Administrator
@file: new_app_publish.py
@time: 2018/08/29
"""

import paramiko
import sys

class AppPush(object):
def __init__(self, project, ip="", user="devroot", pwd="", port=22, ):
self.ip = ip
self.port = port
self.user = user
self.pwd = pwd
self.project = project
# self.connect_server()

def connect_server(self):
paramiko.util.log_to_file('ssh.log') # 使用paramiko记录日志
self.s = paramiko.SSHClient() # 绑定一个实例
self.s.load_system_host_keys() # 加载known_hosts文件
self.s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 远程连接如果提示yes/no时,默认为yes
self.s.connect(self.ip, self.port, self.user, self.pwd, timeout=5)
return True

def get_projetct_name(self):
pro_list = ["applicationRouter",
"businessService",
"customerApp",
"transferService",
"memberService",
"pushCenter",
"configServer"]
assert self.project in pro_list, "project must be applicationRouter,businessService,customerApp," \
"transferService,memberService,pushCenter,configServer"
path = "/usr/local/{0}/{0}.jar".format(self.project)
cmd = "sh /usr/local/{0}/{0}.sh %s".format(self.project)
return (path, cmd)

def exce_server(self, action):
ret = self.connect_server()
if action == "stop":
# get the command
cmd = self.get_projetct_name()[1] % action
print(cmd)
# 执行远程脚本
elif action == "start":
appname = self.get_projetct_name()[0]
cmd = 'nohup /usr/local/java/bin/java -Dspring.cloud.config.uri=' \
'"http://" -jar {app_name} > /dev/null 2>&1 &'. \
format(
app_name=appname)
print(cmd)
# check clinet connectec to server
if ret:
"""
stdin = chan.makefile('wb', bufsize)
stdout = chan.makefile('r', bufsize)
stderr = chan.makefile_stderr('r', bufsize)
"""
stdin, stdout, stderr = self.s.exec_command(cmd)
print(stdout.read())
# sti = stdin.read()
sto = stdout.read()
ste = stderr.read()
for i in [sto, ste]:
try:
if not i:
print(i.decode("utf-8"))
except:
raise UnicodeDecodeError("decode error")
else:
raise ConnectionError("connection server error")
self.disconnect_server()
return True

def disconnect_server(self):
self.s.close()

if __name__ == '__main__':
# AppPush("pushCenter").exce_server("stop")
AppPush(sys.argv[1]).exce_server(sys.argv[2])

jenkins 自动化部署执行shell的更多相关文章

  1. Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  2. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  3. Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)

    jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...

  4. AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署

    一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...

  5. Docker 之 Jenkins自动化部署

    Docker 之 Jenkins自动化部署 Jenkins部署 jenkis 绑定gitlab shell脚本自动化构建Docker镜像 提升maven构建速度 jenkins 无法通过shell脚本 ...

  6. Jenkins自动化部署代码

    通过jenkins自动化部署项目代码可以大幅度节省打包上传部署的时间,提高开发测试的工作效率 ========== 完美的分割线 =========== 1.Jenkins是什么 1)Jenkins是 ...

  7. jenkins自动化部署项目1--下载安装启动(windows)

    年初以来断断续续研究jenkins自动化部署项目,前些天终于搞定了,接下来一点点把做的时候遇到的坑以及自己的心得写下来,方便以后复用. 我的jenkins服务是是部署在windows上的 一.下载安装 ...

  8. Jenkins自动化部署入门详细教程

    大纲 1.背景 在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试: 或者前后端分离后,经常会修改接口,然后重新部署 ...

  9. Jenkins 自动化部署上线

    转载于互联网 jenkins自动化部署项目,通过jenkins 部署来节省运维时间,不需要手动cp上线及版本发布 Jenkins 自动化部署上线 Jenkins Jenkins 自动化部署上线一.Je ...

随机推荐

  1. anaconda的scikit-learn报错It seems that scikit-learn has not been built

    我们在导入sklearn时往往会报错. import sklearn Traceback (most recent call last): File "<stdin>" ...

  2. [认证授权] 1.OAuth2授权

    1 OAuth2解决什么问题的? 举个栗子先.小明在QQ空间积攒了多年的照片,想挑选一些照片来打印出来.然后小明在找到一家提供在线打印并且包邮的网站(我们叫它PP吧(Print Photo缩写

  3. java中的线程池原理

    写的不错,https://www.cnblogs.com/dongguacai/p/6030187.html

  4. 关于vue生命周期

    官网给出的实例的生命周期图如下: beforeCreate(页面创建前),created(页面创建后),beforeMount(页面载入前),mounted(页面载入后),beforeUpdate(页 ...

  5. php框架之thinkphp

    日常开发中经常使用thinkphp5进行开发工作,总结一些使用中遇到的问题和使用的东西 1. web内置服务 V5.1.5+版本开始,增加了启动内置服务器的指令,方便测试 >php think ...

  6. NodeJs之服务搭建与数据库连接

    NodeJs之服务搭建与数据库连接 一,介绍与需求分析 1.1,介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻 ...

  7. CodeForces 1151E Number of Components

    题目链接:http://codeforces.com/problemset/problem/1151/E 题目大意: n个人排成一个序列,标号为 1~n,第 i 个人的学习成绩为 ai,现在要选出学习 ...

  8. cocos 资源工作流程

    前面的话 本文将详细介绍 cocos 中的资源工作流程 概述 [同步性] 资源管理器中的资源和操作系统的文件管理器中看到的项目资源文件夹是同步的 在资源管理器中对资源的移动.重命名和删除,都会直接在用 ...

  9. Auto Layout Masonry

    1. Auto layout 1.1 NSLayoutConstraint 1.1.1 约束类 ios6.0可用 为了更好的适配各个尺寸 1.1.2 constraintWithItem:attrib ...

  10. 【BZOJ4001】[TJOI2015]概率论(生成函数)

    [BZOJ4001][TJOI2015]概率论(生成函数) 题面 BZOJ 洛谷 题解 这题好仙啊.... 设\(g_n\)表示\(n\)个点的二叉树个数,\(f_n\)表示\(n\)个点的二叉树的叶 ...