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
实现了,备份、上传、重启的功能,但做了三次对服务器的连接断开!