红联Linux门户
Linux帮助

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

发布时间:2016-03-09 16:07:49来源:linux网站作者:TS_A1

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 


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


本文永久更新地址:http://www.linuxdiyf.com/linux/18767.html