Linux下遠程備份、上傳工程,重啓服務器

Linux下遠程備份、上傳工程,重啓服務器shell

Linux服務器實現遠程,原項目的備份、刪除,新項目上傳,以及遠程重啓服務器!
分紅一個主shell調用三個shell文件步驟完成。
mainsh.sh一次按順序執行多個腳本,將三步sh順序完成:服務器

#!/bin/sh
02.#此Shell一次按順序執行多個腳本
03.#參數::
04. #遠程jboss服務器所在的ip
05. IP=127.0.0.1
06. #服務器登陸帳戶
07. userx='tskk'
08. #服務器登陸密碼
09. passx='sasa'
10. #部署jboss遠程服務器上項目war文件的全路徑名稱(用於備份)
11. jbossfiledirname=/opt/app/jboss5/server/warset/jasmine.war
12. #備份文件的主目錄
13. filebackupdir=/home/tskk/backup
14. #同名備份區分標識(防止不一樣項目文件重名備份)
15. backupflag=tskk
16. #本地Linux服務器(或Jenkins下項目)下文件全路徑名稱
17. jenkinsfiledirname=/opt/app/jenkins/workspace/jasmine.war
18. #jboss下服務器/bin路徑(用於重啓)
19. jbossbinfiledir=/opt/app/jboss5/server/bin
20.
21.#遠程操做shell文件的全路徑,也可爲不一樣文件夾
22.shfiledir=/opt/app/tskk/commonsh
23.#遠程服務器拷貝,刪除,上傳,重啓jboss
24.sh $shfiledir/remotebackupdeletewar.sh $IP $userx $passx $jbossfiledirname $filebackupdir $backupflag
25.sh $shfiledir/remoteuploadwar.sh $IP $userx $passx $jenkinsfiledirname $jbossfiledirname
26.sh $shfiledir/remoterestartjboss.sh $IP $userx $passx $jbossbinfiledir
注:sh ***.sh parm1 parm2…,能夠順序執行多個腳本app

remotebackupdeletewar.sh實現遠程備份文件:
#!/bin/sh
02.echo "file backupdelete start………………"
03.#訪問遠程服務器ip,user,pass
04.IP=$1
05.userx=$2
06.passx=$3
07.#jboss服務器上項目war文件的全路徑名稱 eg:/opt/app/jboss5/server/warset/jsm.war
08.jbossfiledirname=$4
09.#dirname獲取jboss上war文件路徑 eg:/opt/app/jboss5/server/warset
10.mianjbossfiledir=`dirname $jbossfiledirname`
11.#basename獲取jboss上war文件的名稱 eg:jsm.war
12.jbossfilename=`basename $jbossfiledirname`
13.#備份文件的主目錄
14.mainbackupdir=$5
15.#備份同名標識
16.backupflag=$6
17.#備份文件夾的名稱 eg:tskk-jsm.war201412021439
18.DATE=$(date +%Y%m%d%H%M)
19.filename2=$backupflag-${jbossfilename}${DATE}
20.#sshpass登陸遠程服務器,進行war文件的備份和刪除
21.sshpass -p $passx ssh -o StrictHostKeyChecking=no -tt $userx@$IP <<sshaccess
22.cd $mainbackupdir
23.mkdir $filename2
24.cd $mianjbossfiledir
25.cp -R $jbossfilename $mainbackupdir/$filename2
26.rm -rf $jbossfilename
27.exit
28.sshaccess
29.echo "file backupdelete end-ok………………"
30.exit 0
注:Shell命令sshpass非交互SSH有密碼驗證 ssh

-tt 防止腳本調用ssh後出現Pseudo-terminal will not be allocated because stdin is not a terminal問題spa

-o StrictHostKeyChecking=no 避免第一次登陸出現公鑰檢查ssr

remoteuploadwar.sh實現遠程項目部署服務器:
#!/bin/sh
02.echo "file upload start………………"
03.#訪問遠程服務器ip,user,pass
04.IP=$1
05.userx=$2
06.passx=$3
07.#Jenkins下文件全路徑名稱
08.jenkinsfiledirname=$4
09.#獲取Jenkins下文件路徑
10.jenkinsfiledir=`dirname $jenkinsfiledirname`
11.#獲取Jenkins上文件名稱
12.jenkinsfilename=`basename $jenkinsfiledirname`
13.#jboss上war文件全路徑名稱
14.jbossfiledirname=$5
15.#jboss上war文件路徑
16.jbossfiledir=`dirname $jbossfiledirname`
17.#jboss上war文件名稱
18.jbossfilename=`basename $jbossfiledirname`
19. #對Jenkins下jar按jboss上規範給文件命名
20. #cd $jenkinsfiledir
21. #mv $jenkinsfilename $jbossfilename
22. #重命名後Jenkins上文件全路徑名稱
23. #rejenkinsfiledirname=$jenkinsfiledir/$jbossfilename
24.#sshpass遠程上傳文件到jboss服務器
25.sshpass -p $passx scp -o StrictHostKeyChecking=no $jenkinsfiledirname $userx@$IP:$jbossfiledir <<sshpassupload
26.exit
27.sshpassupload
28.echo "file upload end-ok………………"
29.exit 0 rest

remoterestartjboss.sh實現遠程服務器重啓:
#!/bin/sh
02.echo "jboss restart start………………"
03.#獲取jboss服務器的鏈接信息ip,user,pass
04.IP=$1
05.userx=$2
06.passx=$3
07.#獲取jboss服務器的/bin目錄
08.jbossbindir=$4
09.sshpass -p $passx ssh -tt -o StrictHostKeyChecking=no $userx@$IP <<jbossrestart
10.cd $jbossbindir
11.sudo -u jboss5 ./shutdown.sh
12.sudo -u jboss5 ./start.sh
13.exit
14.jbossrestart
15.echo "jboss restart ok………………"
16.exit 0
實現了,備份、上傳、重啓的功能,但作了三次對服務器的鏈接斷開! server

相關文章
相關標籤/搜索