Linux下远程备份、上传工程,重启服务器

    Linux服务器实现远程,原项目的备份、删除,新项目上传,以及远程重启服务器!

分成一个主shell调用三个shell文件步骤完成。

mainsh.sh一次按顺序执行多个脚本,将三步sh顺序完成:

#!/bin/sh
#此Shell一次按顺序执行多个脚本
#参数::
 #远程jboss服务器所在的ip
 IP=127.0.0.1
 #服务器登录账户
 userx='tskk'
 #服务器登录密码
 passx='sasa'
 #部署jboss远程服务器上项目war文件的全路径名称(用于备份)
 jbossfiledirname=/opt/app/jboss5/server/warset/jasmine.war 
 #备份文件的主目录
 filebackupdir=/home/tskk/backup
 #同名备份区分标识(防止不同项目文件重名备份)
 backupflag=tskk
 #本地Linux服务器(或Jenkins下项目)下文件全路径名称
 jenkinsfiledirname=/opt/app/jenkins/workspace/jasmine.war
 #jboss下服务器/bin路径(用于重启)
 jbossbinfiledir=/opt/app/jboss5/server/bin

#远程操作shell文件的全路径,也可为不同文件夹
shfiledir=/opt/app/tskk/commonsh
#远程服务器拷贝,删除,上传,重启jboss
sh $shfiledir/remotebackupdeletewar.sh $IP $userx $passx $jbossfiledirname $filebackupdir $backupflag
sh $shfiledir/remoteuploadwar.sh $IP $userx $passx $jenkinsfiledirname $jbossfiledirname
sh $shfiledir/remoterestartjboss.sh $IP $userx $passx $jbossbinfiledir

注:sh  ***.sh  parm1 parm2…,可以顺序执行多个脚本

remotebackupdeletewar.sh实现远程备份文件:

#!/bin/sh
echo "file backupdelete start………………"
#访问远程服务器ip,user,pass
IP=$1
userx=$2
passx=$3
#jboss服务器上项目war文件的全路径名称 eg:/opt/app/jboss5/server/warset/jsm.war
jbossfiledirname=$4
#dirname获取jboss上war文件路径 eg:/opt/app/jboss5/server/warset
mianjbossfiledir=`dirname $jbossfiledirname`
#basename获取jboss上war文件的名称 eg:jsm.war
jbossfilename=`basename $jbossfiledirname`
#备份文件的主目录
mainbackupdir=$5
#备份同名标识
backupflag=$6
#备份文件夹的名称 eg:tskk-jsm.war201412021439
DATE=$(date +%Y%m%d%H%M)
filename2=$backupflag-${jbossfilename}${DATE}
#sshpass登录远程服务器,进行war文件的备份和删除
sshpass -p $passx ssh -o StrictHostKeyChecking=no -tt $userx@$IP <<sshaccess
cd $mainbackupdir
mkdir $filename2
cd $mianjbossfiledir
cp -R $jbossfilename $mainbackupdir/$filename2
rm -rf $jbossfilename
exit
sshaccess
echo "file backupdelete end-ok………………"
exit 0

注:Shell命令sshpass非交互SSH有密码验证

       -tt  防止脚本调用ssh后出现Pseudo-terminal will not be allocated because stdin is not a terminal问题

       -o StrictHostKeyChecking=no 避免第一次登录出现公钥检查

remoteuploadwar.sh实现远程项目部署服务器:

#!/bin/sh
echo "file upload start………………"
#访问远程服务器ip,user,pass
IP=$1
userx=$2
passx=$3
#Jenkins下文件全路径名称
jenkinsfiledirname=$4
#获取Jenkins下文件路径
jenkinsfiledir=`dirname $jenkinsfiledirname`
#获取Jenkins上文件名称
jenkinsfilename=`basename $jenkinsfiledirname`
#jboss上war文件全路径名称
jbossfiledirname=$5
#jboss上war文件路径
jbossfiledir=`dirname $jbossfiledirname`
#jboss上war文件名称
jbossfilename=`basename $jbossfiledirname`
	#对Jenkins下jar按jboss上规范给文件命名
	#cd $jenkinsfiledir
	#mv $jenkinsfilename $jbossfilename
	#重命名后Jenkins上文件全路径名称
	#rejenkinsfiledirname=$jenkinsfiledir/$jbossfilename
#sshpass远程上传文件到jboss服务器
sshpass -p $passx scp -o StrictHostKeyChecking=no $jenkinsfiledirname $userx@$IP:$jbossfiledir <<sshpassupload
exit
sshpassupload
echo "file upload end-ok………………"
exit 0

remoterestartjboss.sh实现远程服务器重启:

#!/bin/sh
echo "jboss restart start………………"
#获取jboss服务器的连接信息ip,user,pass
IP=$1
userx=$2
passx=$3
#获取jboss服务器的/bin目录
jbossbindir=$4
sshpass -p $passx ssh -tt -o StrictHostKeyChecking=no $userx@$IP <<jbossrestart
cd $jbossbindir
sudo -u jboss5 ./shutdown.sh
sudo -u jboss5 ./start.sh
exit
jbossrestart
echo "jboss restart ok………………"
exit 0

实现了,备份、上传、重启的功能,但做了三次对服务器的连接断开!

 

 



 

上一篇:Windows Phone 7 网络编程之webclient和httpwebrequest的使用


下一篇:CLR线程、线程池、任务的这些事