工作中的几个运维脚本(build.py,send.py,rupdate.py,update.py)

1, build.py

#!/bin/env python
#coding:utf-8
#author:dxw
#function: build
#date:2016-07-13

import argparse
from string import Template
import os 
import sys

if len(sys.argv) < 7:
    eg = "eg: --projectName bbpayapi --projectNameDir BBPAYAPI_DIR --env production > build_bbpayapi.sh"
    print(eg)
    exit(1)


parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--projectName", action="store", dest="projectName")
parser.add_argument("--projectNameDir", action="store", dest="projectNameDir")
parser.add_argument("--env", action="store", dest="env")
result = parser.parse_args()

strsh='''
#!/bin/bash
#build_dxw_${projectName}.sh

PLATFORM_DIR=/home/dada/bebepayplatform
DEPLOY_DIR=$PLATFORM_DIR/deploy
BACK_DIR=$DEPLOY_DIR/back
WARS_DIR=$DEPLOY_DIR/wars

${projectNameDir}=$PLATFORM_DIR/${projectName}

svnNumber=$1

# cd $PLATFORM_DIR
cd $PLATFORM_DIR

# mkdir deploy/back
if [ -d deploy/back ];then
        echo "deploy and back isexist!"
else
        mkdir -p deploy/back
        echo "mkdir deploy/back ok!"
fi

# mkdir deploy/wars
if [ -d deploy/wars ];then
        echo "deploy and wars isexist!"
else
        mkdir -p deploy/wars
        echo "mkdir deploy/wars ok!"
fi

# cp deploy/files.war to back
cp $DEPLOY_DIR/${projectName}.war $BACK_DIR/${projectName}.war

# svn up
svn up

if [ $? -ne 0 ];then
        echo "platform svn up failed"
        exit 1
fi

cd $$${projectNameDir}
#svn up -r $1
svn up -r $svnNumber
if [ $? -ne 0 ];then
        echo "${projectName} svn up failed"
        exit 1
fi

# build
# mvn clean package -DskipTests -P ${env}
mvn clean package -DskipTests -P ${env}
if [ $? -ne 0 ];then
        echo "${projectName} build failed"
        exit 1
fi



#echo "cp $$${projectNameDir}/target/*.war $DEPLOY_DIR/${projectName}.war"
echo "cp $$${projectNameDir}/target/*.war $DEPLOY_DIR/${projectName}.war"

cp $$${projectNameDir}/target/*.war $WARS_DIR/${projectName}.war_$svnNumber
cp $$${projectNameDir}/target/*.war $DEPLOY_DIR/${projectName}.war
if [ $? -ne 0 ];then
        echo "cp ${projectName} failed"
        exit 1
fi

dt=`date`
echo "$dt &nbsp&nbsp&nbsp&nbsp $$${projectName} &nbsp&nbsp&nbsp&nbsp $$${projectNameDir} &nbsp&nbsp&nbsp&nbsp $svnNumber <br>" >> /usr/local/nginx/html/t.html

'''

d = dict(projectName=result.projectName, env=result.env, projectNameDir=result.projectNameDir)
#print("d: %s"%(d) )
print( Template(strsh).safe_substitute(d) )

 

2, send.py

#!/bin/env python
#coding:utf-8
#author:dxw
#function: send
#date:2016-07-13

import argparse
from string import Template
import os 
import sys

if len(sys.argv) < 11:
    eg = "eg: --projectName ebomp --port 22 --user bebepay --userDir run_pkgs --iplist 192.168.114.11,192.168.114.12,192.168.114.13,192.168.114.14 > send_bbpayapi.sh"
    print(eg)
    exit(1)


parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--projectName", action="store", dest="projectName")
parser.add_argument("--port", action="store", dest="port")
parser.add_argument("--user", action="store", dest="user")
parser.add_argument("--userDir", action="store", dest="userDir")
parser.add_argument("--iplist", action="store", dest="iplist")
result = parser.parse_args()

strsh='''
#!/bin/bash
#send_dxw_${projectName}.sh

PLATFORM_DIR=/home/dada/bebepayplatform
DEPLOY_DIR=$PLATFORM_DIR/deploy

# COPY FILE TO REMOTE HOST

'''

strp='''
# cp file to ${ip}
echo "scp $DEPLOY_DIR/${projectName}.war ${user}@${ip}:${userDir} ......"
scp -P ${port}  $DEPLOY_DIR/${projectName}.war ${user}@${ip}:${userDir}/
if [ $? -ne 0 ]; then
    echo "scp $DEPLOY_DIR/${projectName}.war ${user}@${ip}:${userDir} faill!!"
    exit 1
fi
'''

#print("userDir: %s"%(result.userDir))

d1 = dict(projectName=result.projectName)
#print("d: %s"%(d) )
print( Template(strsh).safe_substitute(d1) )

d0 = dict(port=result.port, user=result.user, userDir=result.userDir, projectName=result.projectName)

ips=result.iplist.split(',')
#print("iplist: %s"%(ips))

for lip in ips:
    t=dict(ip=lip)
    d=d0.copy()
    d.update(t)
    s = Template(strp).safe_substitute(d)
    print(s)

 

3, rupdate.py

#!/bin/env python
#coding:utf-8
#author:dxw
#function: rupdate
#date:2016-07-13

import argparse
from string import Template
import os 
import sys

if len(sys.argv) < 11:
    eg = "eg: --projectName ebomp --port 22 --user bebepay --userDir run_pkgs --iplist 192.168.114.11,192.168.114.12,192.168.114.13,192.168.114.14 > rupdate_bbpayapi.sh"
    print(eg)
    exit(1)


parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--projectName", action="store", dest="projectName")
parser.add_argument("--port", action="store", dest="port")
parser.add_argument("--user", action="store", dest="user")
parser.add_argument("--userDir", action="store", dest="userDir")
parser.add_argument("--iplist", action="store", dest="iplist")
result = parser.parse_args()

strsh='''
#!/bin/bash
#rupdate_dxw_${projectName}.sh

PLATFORM_DIR=/home/dada/bebepayplatform
DEPLOY_DIR=$PLATFORM_DIR/deploy

# COPY FILE TO REMOTE HOST

'''

strp='''
echo "Beginning ${ip} update_${projectName}.sh-------"
ssh -p ${port} -t ${user}@${ip} /home/${user}/${userDir}/update_dxw_${projectName}.sh
'''

#print("userDir: %s"%(result.userDir))

d1 = dict(projectName=result.projectName)
#print("d: %s"%(d) )
print( Template(strsh).safe_substitute(d1) )

d0 = dict(port=result.port, user=result.user, userDir=result.userDir, projectName=result.projectName)

ips=result.iplist.split(',')
#print("iplist: %s"%(ips))

for lip in ips:
    t=dict(ip=lip)
    d=d0.copy()
    d.update(t)
    s = Template(strp).safe_substitute(d)
    print(s)

 

4, update.py

#!/bin/env python
#coding:utf-8
#author:dxw
#function: update
#date:2016-07-13

import argparse
from string import Template
import os 
import sys

if len(sys.argv) < 9:
    eg = "eg: --projectName ebomp --projectTomcatDir TOMCAT_EBOMP_DIR --user bebepay --userDir run_pkgs > update_bbpayapi.sh"
    print(eg)
    exit(1)


parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--projectName", action="store", dest="projectName")
parser.add_argument("--projectTomcatDir", action="store", dest="projectTomcatDir")
parser.add_argument("--user", action="store", dest="user")
parser.add_argument("--userDir", action="store", dest="userDir")
result = parser.parse_args()

strsh='''
#!/bin/bash
#
#update_dxw_${projectName}.sh

#set Shell Variable
RUN_DIR=/home/${user}/${userDir}

${projectTomcatDir}=/usr/local/tomcat-${projectName}

#stop tomcat-${projectName}
tomcat_${projectName}_pid=`ps -ef |grep java |grep tomcat-${projectName} |grep -v grep |awk '{print $2}' `

echo "start kill tomcat-${projectName} ..."
sudo kill -9 $tomcat_${projectName}_pid
if [ $? -ne 0 ];then
    echo "stop tomcat-${projectName} faill!!"
fi

#rm ${projectName}
echo "rm ${projectName} from tomcat-${projectName}..."
sudo rm -rf $$${projectTomcatDir}/webapps/${projectName}*
if [ $? -ne 0 ];then
    echo "rm ${projectName} on tomcat-${projectName} faill!!"
fi

#cp ${projectName}.war
echo "cp ${projectName}.war to tomcat-${projectName} ..."
sudo cp $RUN_DIR/${projectName}.war $$${projectTomcatDir}/webapps/${projectName}.war
if [ $? -ne 0 ];then
    echo "cp ${projectName}.war to tomcat-${projectName} faill!!"
    exit 1
fi

#start tomcat-${projectName}
echo "start tomcat-${projectName} ..."
sudo $$${projectTomcatDir}/bin/startup.sh
if [ $? -ne 0 ];then
    echo "start tomcat-${projectName} faill!!"
    exit 1
else
    echo "start tomcat-${projectName} ok!!"
fi


'''


d = dict(user=result.user, userDir=result.userDir, projectName=result.projectName, projectTomcatDir=result.projectTomcatDir)
s = Template(strsh).safe_substitute(d)
print(s)

 

转载于:https://my.oschina.net/lenglingx/blog/800979

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值