工作所用的模塊回滾腳本

俗話說的好:“真男人從來不回滾”,但是家中常備一個回滾腳本也是很有必要的,我所在公司的服務器模塊名都是在初始化的時候寫進/etc/role_install這個文件里,如下圖的這個服務器就是fss服務器:

wKioL1lcicDTHuIEAAAc35tj_Kw536.png


再比如下面這個服務器,雖然包含nginx的組件但是httpproxy的服務器:

wKiom1lcijzy4_9MAAAloN3Ijck735.png


那么有了這樣的前提,整個回滾的腳本內容如下:

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 .

wKiom1lck3ny7e5DAAFedrqgs0I255.png

不過如果文件夾里還有其他lib開頭的文件夾也會被過濾掉,這一點要注意。


2)本shell里面涉及了邏輯判斷,而[[ 和 [ 的區別如下圖:

wKiom1lcmF3hhIlVAAAqj1jTU9U969.gif


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



最后的最后,如果您覺得本文對您升職加薪迎娶白富美有幫助,那么請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多優秀的博文!

wKioL1l16m3BMYDKAACPHEqd55Q687.jpg


?本文轉自 蘇幕遮618 51CTO博客,原文鏈接:http://blog.51cto.com/chenx1242/1944756



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/540266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540266.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux服務器性能評估與優化

一、影響Linux服務器性能的因素 1. 操作系統級 CPU 內存 磁盤I/O帶寬 網絡I/O帶寬 2. 程序應用級 二、系統性能評估標準影響性能因素評判標準好壞糟糕CPUuser% sys%< 70%user% sys% 85%user% sys% >90%內存Swap In&#xff08;si&…

[轉載] Java序列化的幾種方式以及序列化的作用

參考鏈接&#xff1a; Java中帶有繼承的對象序列化 文章轉載自&#xff1a; 本文著重講解一下Java序列化的相關內容。 如果對Java序列化感興趣的同學可以研究一下。 一.Java序列化的作用 有的時候我們想要把一個Java對象變成字節流的形式傳出去&#xff0c;有的時候我們…

nginx 非80、443端口跳轉到80、443

其實很簡單: 123if ($server_port ! 80 ) { rewrite ^/(.*)$ http://$host/$1 permanent; }舉一反三。。。 123if ($server_port ! 443 ) { rewrite ^/(.*)$ https://$host/$1 permanent; }123if ($host ! host ) { rewrite ^/(.*)$ http://host/$1 permanent; }本文轉自 ninny…

[轉載] 一文徹底搞懂父類引用指向子類對象問題

參考鏈接&#xff1a; 用子類引用子類對象 vs 父類引用 public class Father { private String name; private int age; private int weight; public void eat() { System.out.println("Father is eating"); } private void run() { System.out.println("Runin…

把控站外seo效果的幾個操作點

把控站外seo效果的幾個操作點 實際上&#xff0c;站外的seo不僅僅是外鏈這么簡單&#xff0c;還包括用戶行為&#xff08;點擊&#xff09;&#xff0c;品牌詞曝光等工作。大部分情況下&#xff0c;我們所說的站外優化就是發外鏈。本文就外鏈相關事宜&#xff0c;講解些許操作點…

[轉載] 【C語言】fopen C4996錯誤解決

參考鏈接&#xff1a; C和C#重載可以與繼承一起使用嗎 C4996 fopen: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 解決方案&#xff1a;添加宏定…

Quartus II 8.1 詳解--有圖---圖片詳解 【1講】

Quartus II 8.1 詳解--有圖---圖片詳解 看圖片比較清楚&#xff0c;比文章清楚的多 本文轉自 zhangguangyi 51CTO博客&#xff0c;原文鏈接http://blog.51cto.com/bosszhang/808019:

[轉載] JAVA數組實現學生成績統計

參考鏈接&#xff1a; Java程序的輸出 20(繼承) 一、項目名稱 數組實現學生成績統計 二、項目描述 1.項目簡介&#xff1a; 由用戶輸入學生人數與名字&#xff0c;并定義當前學期課程數與課程名&#xff0c;并分別錄入每位學生每門課程成績&#xff0c;系統顯示輸入每位學生每…

建立同步文件的腳本

為避免一個一個的去修改每一個服務器的配置文件&#xff0c;只需要rsync同步一下就可以搞定#!/bin/bash#rsync.shLOCAL_DIR"/opt/admin"test -n "$hosts" || hosts"xxxx xxxx"REMOTE_DIR"/opt/"RSYNC_LOG"/opt/var/log/rsync.log…

[轉載] Java三元運算符示例

參考鏈接&#xff1a; Java中的運算符 本示例說明如何編寫Java三元運算符。 這是語法 condition ? get_this_if_true : get_this_if_false Java三元運算符語法 (n > 18) ? true : false; (n true) ? 1 : 0; (n null) ? n.getValue() : 0; 1. Java三元運算符 …

shell下的進度條和最大最小平均值

進度條 C語言下的進度條參考我原來的一篇blog->進度條 1234567891011121314151617181920212223function proc() {i0 str arr(| / - \\) index0 while [ $i -le 100 ] do printf "[%-101s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}&qu…

[轉載] 你真的會用 Java 中的三目運算符嗎

參考鏈接&#xff1a; Java中的按位運算符 轉載:http://blog.jobbole.com/93511/ 寫在前面&#xff1a; 三目運算符是我們經常在代碼中使用的&#xff0c;a (bnull?0:1); 這樣一行代碼可以代替一個 if-else&#xff0c;可以使代碼變得清爽易讀。但是&#xff0c;三目運算符也…

HTTP Keep-Alive模式

1、什么是Keep-Alive模式&#xff1f; 我們知道HTTP協議采用“請求-應答”模式&#xff0c;當使用普通模式&#xff0c;即非KeepAlive模式時&#xff0c;每個請求/應答客戶和服務器都要新建一個連接&#xff0c;完成 之后立即斷開連接&#xff08;HTTP協議為無連接的協議&#…

[轉載] java:比較運算符

參考鏈接&#xff1a; Java中的new運算符 1.compareTo()方法: compareTo()方法返回的是一個int類型值. //聲明的值 BigDecimal t_sell1 new BigDecimal(); BigDecimal t_sell2 new BigDecimal(); if(t_sell1.compareTo(t_sell2)0){ return "t_sell1的值等于t_sell2&…

[轉載] java左移右移和無符號右移

參考鏈接&#xff1a; Java中的按位右移運算符 ###知識點 java的三種位移運算符&#xff1a; <<&#xff1a;左移運算符&#xff0c;num << 1,相當于num乘以2 >>&#xff1a;右移運算符&#xff0c;num >> 1,相當于num除以2 >>>&#xff1a…

Script:List OBJECT DEPENDENT

以下腳本用以列出數據庫中對象的依賴性:select D_OBJ#, 本文轉自maclean_007 51CTO博客&#xff0c;原文鏈接: http://blog.51cto.com/maclean/1276767

[轉載] java避免空指針異常_第1部分:在現代Java應用程序中避免空指針異常

參考鏈接&#xff1a; Java的instanceof及其應用 java避免空指針異常 空做與不做 (Null do’s and don’ts) In the talk Null References: The Billion Dollar Mistake, Sir Tony Hoare describes implementing null references as a part of the ALGOL programming languag…

[轉載] 什么是Java中的自動拆裝箱 integer

參考鏈接&#xff1a; Java中autoboxing自動裝箱整數對象的比較 本文主要介紹Java中的自動拆箱與自動裝箱的有關知識。 1、基本數據類型 基本類型&#xff0c;或者叫做內置類型&#xff0c;是Java中不同于類(Class)的特殊類型。它們是我們編程中使用最頻繁的類型。 Jav…

[轉載] python常用庫

參考鏈接&#xff1a; Python–新一代語言 轉載至&#xff1a;https://www.cnblogs.com/jiangchunsheng/p/9275881.html 今天我將介紹20個屬于我常用工具的Python庫&#xff0c;我相信你看完之后也會覺得離不開它們。他們是&#xff1a; Requests.Kenneth Reitz寫的最富盛…

linux下安裝配置oracle

檢查系統是否已安裝所需的開發包 使用rpm -qa命令&#xff0c;確保以下包已成功安裝。對于包的版本,只有版本高于下面的都可以,如果低于此版本,則要升級處理,如下: binutils-2.15.92.0.2-13.EL4 compat-db-4.1.25-9 compat-libstdc-296-2.96-132.7.2 control-center-2.8.0-12 g…