-
前言:
這周在學習Shell腳本編程,學習用到測試環境是Centos6和Centos7,老師建議我們寫一個reset.sh 腳本可以實現系統環境一鍵還原系統工作環境,可以避免將來重裝系統后繁雜的配置,我就用目前學習的知識自己編寫了一個工具,reset.sh,可以實現交互式的備份還原當前系統的配置文件,由于沒有學習到循環和功能調用,部分代碼可能不夠精簡,實現方法也有點笨,等到學到新技術后,再來更新腳本。
-
設計思路
- 所有的配置備份文件繼承統一的命名規則,NAME.bak_VERSION
NAME:需要備份的配置文件的名稱。
VERSION:系統的版本信息,方便腳本中變量賦值。 - 運行腳本,會自動創建備份目錄,文件的備份路徑默認是在程序運行的當前目錄創建備份文件夾,命名規則cfg_back_VERSION
- 腳本中記錄了需要備份的配置文件的路徑信息,每次執行腳本都會將這些文件,保存到cfg_backup_VERSION/YY-MM-DD—HH-mm-ss/中,文件夾的名稱為當前時間。
- 腳本執行可以交互式的恢復備份文件中指定日期的配置備份文件。
-
程序功能展示
-
? 功能選擇界面
1)用戶可隨意自行DIY自己的個性LOGO,顏色每次登陸隨機改變。
2)用戶可根據自己的操作需求,輸入1或者2,來決定是要備份還是還原系統配置。
3)對于個別英語不好或者手愛抖的同學和朋友,我們還特意設置了親切友好的翻譯交互方式!
?2.配置備份模塊
1)如果你選擇了2,并且回車了,你會發現程序并沒有執行,光標會在這里等待你9秒(糾結癥和手殘黨的福音)直到你再此敲擊回車,或者等到9秒后備份開始執行。
2)程序執行后會提醒你開始備份,和結束備份,而且將備份文件的絕對路徑信息通過綠顏色標注出來,每個文件是否備份完成也會提醒。
3.配置還原模塊
1)如果你選擇了1,那么你會發現許多你曾經備份過的文件被列了出來,你可以選擇其中一個你想要恢復回去的日期,輸入行前面的數字,當然如果你不按要求輸入數字,
依然會得到親切友好的提醒的哦,中英文雙翻??!
2)輸入正確數字,回車后,會看到開始配置,和配置完成的提醒,配置過的文件也時用綠色標出,成敗一目了然。這里有一個后臺操作,界面是不顯示的,腳本在還原配置之前會提前把目前系統的配置做一個備份,然后再執行還原,這樣防止誤操作帶來的不可逆損失!
-
腳本展示
1.首先進行變量聲明,將系統中用到的變量提前解釋,因為我寫的腳本我回頭看都看不懂??!Centos6 和7 的網卡名稱不一樣,所以這里分別進行提取賦值給N1和N2,
2.常量聲明中,定義了要備份文件的絕對路徑信息,還有那個“親切問候語”庫;
i用來產生隨機數,依次和1到6進行比較,進而給JOKE賦值,JOKE會在后面登陸錯誤提示信息處被打??;這里實現也可以用循環!
3.個性化LOGO設計;每一行顏色都是隨機產生的。
下面是登陸信息提示,首先判斷用戶輸入值是否是數字,然后再判斷是否大于2;如果不合理輸出對應的提示語,外加上隨機的一句JOKE!
4.腳本里有兩部分內容,沒學到調用功能,只會順序執行,想了個辦法就是給命令行前加注釋#,定義了兩個變量 Reset 和 Backup通過用戶輸入的值,給對應的參數賦值,來注釋掉對應的行。
這里通過ls? -dtl 和 sed 分別把文件名按修改時間排序,將文件名剪切了出來。但是不知道如何給行加行號,就重定向了一個temp臨時文件中,用完后刪除temp文件。
5.為防止用戶誤操作,每次還原前,都是提前備份的,這里出現一個問題,Reseth和Backup被替換成#后,系統默認將他識別為命令,會報錯,所以用了錯誤重定向,將報錯除去。
-
后言
- 哈哈,一個Shell 初學者寫的玩的,程序員都時復雜的功能簡單做,會的不多,只能簡單的功能復雜做了,不過是在學習嘛,我覺得總結知識最有效的方法就是用一用,這個腳本基本上用上了老師講的一些編寫腳本的知識,雖然功能簡單,卻也調試了好幾天!!代碼也有幾行,不斷累積到了一百多行!不斷有錯誤,也不斷有新的想法,那種有想法就能克服各種困難,實現的感覺還是很棒的!
- 一開始我是寫了兩個腳本的,一個備份用,一個還原用,想整合成一個,但是功能調用還沒學,就想了個在行首賦值#的想法,,報錯,腳本不足的地方很多,比如很多地方可以用循環來簡化,功能調用等。
3.那么問題來了,你一定會問怎么確認備份沒問題,我的回答是,我也不知道,哈哈,不夠我都做過測試了,但是可能還有別的錯誤,等待大家來發現,歡迎批評指正。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95959
很好很強大,特別是配圖,哈哈哈