#!/usr/bin/env python
#--coding:utf8--
import sys,subprocess,os,datetime,paramiko,re
local_path='/home/pangpeng/'
nginx_web_path='/var/www/html/'
tomcat_webapps_path='/usr/local/tomcat7/webapps/'
backup_nginx_path='/tmp/backup_nginx/'
backup_tomcat_app='/tmp/backup_tomcat_app/'
username='root'
port=22 #ssh port def web(web_dir,update_ip):
#creat remote backup_path
creat_backup_dir_cmd = 'mkdir '+backup_nginx_path
exec_cmd(update_ip,creat_backup_dir_cmd) current_date = datetime.datetime.now().strftime("%Y%m%d%H%M")
cmd = 'mv '+nginx_web_path+web_dir+' '+backup_nginx_path+web_dir+'_'+current_date
#backup
exec_cmd(update_ip,cmd)
#upload file
upload_cmd = 'scp -r '+local_path+web_dir+' '+update_ip+':'+nginx_web_path
print(upload_cmd)
subprocess.Popen(upload_cmd,shell=True,stdout=subprocess.PIPE)
#change owner
#chmod_cmd='chown -R jujusport.jujusport '+nginx_web_path+web_dir
#exec_cmd(update_ip,chmod_cmd) def tomcat(tomcat_ip,app): root_dir = re.split('\.',app)[0]
creat_backup_tomcat_app_cmd = 'mkdir '+backup_tomcat_app
current_date = datetime.datetime.now().strftime("%Y%m%d%H%M")
tomcat_cmd='pkill -15 java;sleep 5;'+'mv '+tomcat_webapps_path+app+' '+backup_tomcat_app+app+'_'+current_date
tomcat_cmd2='mv '+tomcat_webapps_path+root_dir+' '+backup_tomcat_app+root_dir+'_'+current_date
upload_cmd='scp '+local_path+app+' '+tomcat_ip+':'+tomcat_webapps_path
cmd='sudo -u jujusport /usr/local/tomcat7/bin/catalina.sh start' #create backup dir
exec_cmd(tomcat_ip,creat_backup_tomcat_app_cmd)
#backup PacketName.war PacketName
exec_cmd(tomcat_ip,tomcat_cmd)
exec_cmd(tomcat_ip,tomcat_cmd2)
#upload file
subprocess.Popen(upload_cmd,shell=True,stdout=subprocess.PIPE)
print "upload done:"+upload_cmd
#start tomcat
exec_cmd(tomcat_ip,cmd) def exec_cmd(server_ip, cmd):
paramiko.util.log_to_file('/tmp/paramiko.log')
pkey='/root/.ssh/id_rsa'
key=paramiko.RSAKey.from_private_key_file(pkey)
s=paramiko.SSHClient()
s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(server_ip,port,username,pkey=key)
try:
print server_ip+':'+cmd
stdin,stdout,stderr=s.exec_command(cmd)
print 'stdout:'+stdout.read()
print 'stderr:'+stderr.read()
except Exception, e:
print e
finally:
s.close() def cleanstore(server_ip,back_up_dir):
command = "find %s -type d -mtime +30 |xargs rm -fr" %(back_up_dir)
exec_cmd(server_ip,command)
if __name__ == "__main__":
print '''
example:deploy.py web v1
example:deploy.py tomcat 192.168.1.192 ROOT.war
'''
if (sys.argv[1] == 'web') and (sys.argv[2]=='v1'):
web("v1",'192.168.1.193')
cleanstore('192.168.1.193',backup_nginx_path)
elif (sys.argv[1] == 'tomcat') and (sys.argv[2]=='192.168.1.192'):
tomcat('192.168.1.192',sys.argv[3])
cleanstore('192.168.1.192',backup_tomcat_app)
elif (sys.argv[1] == 'tomcat') and(sys.argv[2]=='192.168.1.193'):
tomcat('192.168.1.193',sys.argv[3])
cleanstore('192.168.1.193',backup_tomcat_app)
else:
sys.exit(0)

sed -i 's/Defaults    requiretty/#Defaults    requiretty/' /etc/sudoers

#visudo 注释掉Defaults    requiretty

不然无法执行:

cmd='sudo -u jujusport /usr/local/tomcat7/bin/catalina.sh start'
exec_cmd(tomcat_ip,cmd)

转自

nginx tomcat 自动部署python脚本 - CSDN博客 http://blog.csdn.net/u013636377/article/details/50556443

nginx tomcat 自动部署python脚本【转】的更多相关文章

  1. 应用maven自动部署的脚本

    @(编程) 最近写了一个自动部署的脚本,可以一键部署到测试服务器或者生产服务器上,包括一个函数脚本和一个调用脚本,比较简单,记录如下. 特点如下: 部署前自动备份 可以部署tomcat项目和java项 ...

  2. windows 10 如何设定计划任务自动执行 python 脚本?

    我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...

  3. Jenkins自动执行python脚本输出测试报告

    前言 在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作. 借助Jenkins,我们可以结合 Git/SVN 自动拉取 ...

  4. 自动执行Python脚本

    一.自动执行Python脚本(前提条件是电脑已安装对应的Python程序) 1.1.win+R-输入cmd在输入where python查看Python的安装位置 C:\Users\ASUS\AppD ...

  5. 最新JetBrainsPyCharm自动部署Python(Django,tornado等)项目至远程服务器

    每次开发Python项目时,对于所有Python开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP ...

  6. Linux下SVN+多个Tomcat自动部署

    项目中都是jsp开发,所以用到Tomcat. 在我文章中也写过多个Tomcat 的部署,具体可以参考:http://www.cnblogs.com/magmell/p/7045193.html SVN ...

  7. 服务发现之consul理论整理_结合Docker+nginx+Tomcat简单部署案例

    目录 一.理论概述 服务发现的概念简述 consul简述 二.部署docker+consul+Nginx案例 环境 部署 三.测试 四.总结 一.理论概述 服务发现的概念简述 在以前使用的是,N台机器 ...

  8. 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结

    系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...

  9. nginx+tomcat+java部署总结

    昨天部署了一下nginx+tomcat+java出现了很多问题,以下为整理总结. 使用了两种部署方式,一种是源码部署,一种是war部署. java源码部署总结: 环境:nginx+tomcat 部署方 ...

随机推荐

  1. git学习心得(1)

    这次是第一次用git这个平台,还非常不熟练,尤其是在上传代码的步骤上,有好几次都出了问题,多次询问了同学才将代码上传到平台上,git是一个分布式版本控制系统,相对于集中式的来说具有很多优点,但是中文资 ...

  2. 2013长春网赛1010 hdu 4768 Flyer

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4768 题意:有n个社团发传单,每个社团发给编号为A_i, A_i+C_i,A_i+2*C_i,…A_i ...

  3. 51nod 1577 异或凑数

    思路真的是挺巧妙的. 让我惊叹,原来线性基还能这么做?!?! 好吧,这种取若干个数异或凑数的题目怎么能少的了线性基呢? 但是,问题集中在于怎么快速提取一个区间的线性基 暴力n^2 线段树维护线性基?分 ...

  4. Build CRUD Application with jQuery EasyUI

    http://www.jeasyui.com/tutorial/app/crud.php It has become a common necessily for web application to ...

  5. java生成棋盘

    第一步:新建java项目,具体的命名,看下面的文件结构. 第二步:代码区 DrawChessBoard类: package com.hp.chenyanlong; import java.awt.Gr ...

  6. mysql concat_ws 与 concat 多字段模糊匹配应用

    有时我们希望在表中多个字段检索是否有我们给出的关键字,我们可以使用 concat_ws 和 concat 连接需要检索的字段,如: select * from userInfo where conca ...

  7. OpenStack 认证服务 KeyStone 服务注册(五)

    创建服务实体和API端点 创建服务 openstack service create --name keystone --description "OpenStack Identity&qu ...

  8. Java基础-爬虫实战之爬去校花网网站内容

    Java基础-爬虫实战之爬去校花网网站内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 爬虫这个实现点我压根就没有把它当做重点,也没打算做网络爬虫工程师,说起爬虫我更喜欢用Pyt ...

  9. CCNA学习与实验指南——第3章 以太网

    以太网就是局域网,IEEE制定了802.2和802.3两种标准.802.2规定了OSI模型的数据链路层的上半部分(LLC子层),802.3规定了OSI模型的数据链路层的下半部分和物理层(MAC子层). ...

  10. webpack:代码分割与按需加载

    代码分割就是我们根据实际业务需求将代码进行分割,然后在合适的时候在将其加载进入文档中. 代码中总有些东西我们希望拆分开来,比如: 使用概率较低的模块,希望后期使用的时候异步加载 框架代码,希望能利用浏 ...