儲存平台:Linux
底下用bash寫,這樣判斷有沒備份並不是很好,得人工看備份日期。不熟bash 邊問邊爬邊寫只能先這樣,暫且這樣交差。
工廠端層數較多:主目錄->部門->人員,多層目錄。
我目前是先在主目錄放一個bat_run.sh檔來執行每個部門目錄下的backup_log.sh,統一傳回一個log檔再寄出。
底下寫法是只有一層目錄

#/bin/bash
BASEDIR=$(dirname "$0")
cd "$BASEDIR"
##取得當前腳本路徑,並進入
 
IFS=$'\n'
##將間隔符號設為換行\n
 
declare -a User=($(ls -l |grep "^d" |awk '{print $10" "$11}'))
##宣告陣列User
##ls -l輸出資料夾再用grep查找 ^符合 d開頭的資料,輸出結果是資料夾
##awk '{print $10" "$11}' print出第10、11的內容,中間加上" "空格,才能正確呈現
 
let UserLength=${#User[@]}-2
##${#User[@]} 列出陣列有幾筆資料
##let計算陣列UserLength長度為 筆數-2 (扣掉歷史版本、日志)
 
echo $UserLength
##確認取得長度是否正確,有6筆正確。這段可去掉
 
echo '' > log
##清空log檔案內容
 
for ((i=0; i<$UserLength; i++))
do
        Path=${User[$i]}
##將每筆用戶名帶入Path
 
        echo ${User[$i]} >> log
##將每筆用戶帶入Path 並寫到log
 
        ls -lt $Path/日志 |sed -n 2p >> log
##ls -l:取得用戶資料夾下的日志  -t:依最近修改時間順序排序最新在前
##sed -n 2p 抓取第二行 (第一行是總用量,第二行才開始是資料)
##总用量 156
##-rwxrwxr--+ 1 backup.admin domain admins 15891 9月 3 15:00 Backup 2018-09-03 150003.438.log
 
done
 
cat log |mail -v -s "Backup Log" qoo@abc.com,xxx@abc.com
##讀取log內容,並發給多個資訊人員

比較理想應該要加上判斷主目錄下1~n層下是否有日志
陸廠目前最多3層, 台廠僅1層很好抓
有日志則進入抓取,判斷最近n天是否有備份紀錄,因有時出差或請假不會跑備份。
若抓取不到日志檔則echo 人員、沒有備份紀錄
有紀錄則不需回傳,哪天太閒再改吧

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *