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