工作所用的模块回滚脚本
俗話說的好:“真男人從來不回滾”,但是家中常備一個回滾腳本也是很有必要的,我所在公司的服務器模塊名都是在初始化的時候寫進/etc/role_install這個文件里,如下圖的這個服務器就是fss服務器:
再比如下面這個服務器,雖然包含nginx的組件但是httpproxy的服務器:
那么有了這樣的前提,整個回滾的腳本內容如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #!/bin/bash #Written?by?ChrisChan?@July-4th-2017 #Desription:這是一個回滾的腳本。 module=$(cat?/etc/role_install?|grep?-v?zkclient|grep?-v?nginx) echo?-e?'\033[31m現在將執行回滾操作,本次回滾只回滾普通模塊,不包含nginx和zkclient!\033[0m'? echo?"回滾的模塊名稱:"$module echo?-e?'\033[33m如果想取消回滾操作,請ctrl+c立即停止本腳本...\033[0m' sleep?5 cd?/dxpbackup/hswx/$module?&&?zip?$module.zip?-x?"*og*"?-r?.????#到備份的文件夾里去壓縮 mv?/dxpbackup/hswx/$module/$module.zip?/mnt/hswx???? echo?$module".zip文件已經生成!" until?[?"$decision"?==?"Y"?-o?"$decision"?==?"y"?-o?"$decision"?==?"N"?-o?"$decision"?==?"n"?] do ????????read?-p?"請問是否用回滾的壓縮包覆蓋到/mnt/hswx下?(y/n)"?decision ????????echo?"您的選擇是:"$decision ????????if?[?$decision?==?Y?-o?$decision?==?y?] ????????????????then ????????????????????????echo?"現在已經開始覆蓋..." ????????????????????????rm?-rf?/mnt/hswx/$module????#先把原來的內容刪除 ????????????????????????unzip?/mnt/hswx/$module.zip?-d?/mnt/hswx/$module????#重新解壓縮進去 ????????????????????????echo?-e?'\033[32m覆蓋已經完成,可以直接執行/startall腳本!\033[0m' ????????elif?[?$decision?==?N?-o?$decision?==?n?] ????????????????then ????????????????????????echo?-e?'\033[32m生成的'$module'.zip文件保存在/root文件夾里\033[0m' ????????else ????????????????echo?-e?'\033[31m輸入字符不符合!請重新輸入!\033[0m' ????????fi done |
新的知識點!
1)zip在壓縮文件夾的時候要過濾掉某些文件使用“-x”參數,比如說要在AAA文件夾里面過濾掉abc和jqk這兩個文件,那么語句就是#zip AAA.zip -x "abc" -x "jqk" -r .?或者是?#zip -r -x=abc -x=jqk AAA.zip .?這樣兩個語句。
如果你要過濾掉的是一個文件夾,比如那么就要在文件夾后面名字加上一個*,下圖就是要壓縮整個auc文件夾為456.zip但是又不想要lib這個文件夾,就使用了#zip 456.zip -x "lib*" -r .:
不過如果文件夾里還有其他lib開頭的文件夾也會被過濾掉,這一點要注意。
2)本shell里面涉及了邏輯判斷,而[[ 和 [ 的區別如下圖:
3)如果if語句中出現報錯“[: too many arguments”,很有可能就是字符串變量中可能存在空格,shell解析時將其認為是多個參數,再進行判斷時,無法知道該獲取哪個值,所以最好都用雙引號括起來;?
4)如果是“變量a等于aa且變量b等于bb ?或者 變量c等于cc且變量d等于dd ” 這樣的判斷句怎么寫?答曰:
[?$a?=?"aa"?-a?$b?=?"bb"?]?||?[$c?=?"cc"?-a?$d?=?"dd"?]參考資料:https://zhangge.net/4776.html
最后的最后,如果您覺得本文對您升職加薪迎娶白富美有幫助,那么請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多優秀的博文!
?本文轉自 蘇幕遮618 51CTO博客,原文鏈接:http://blog.51cto.com/chenx1242/1944756
總結
以上是生活随笔為你收集整理的工作所用的模块回滚脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Day41】Python之路——AJA
- 下一篇: Erlang/OTP设计原则(文档翻译)