import os
import subprocess
MAIL_MESSAGE = '''
Hi, {}
因 CML Server 掛載家目錄(~)的 NAS 空間即將不足,我們將於 4/28(日) 00:00 開始清除長時間沒有修改紀錄的資料夾
本次清理,我們將移除 2024/02/01 以後沒有修改紀錄的資料夾、檔案
以下是您家目錄中可能被移除的內容:
__ __ _
/ / / /__ (_)_ __
__ ___/ /_/ / _ \/ /\ \ /
/ |/ /\____/_//_/_//_\_\____ ____
/ /|_/ / _ `/ _ \/ _ `/ _ `/ -_) __/
/_/ /_/\_,_/_//_/\_,_/\_, /\__/_/
/___/
'''
class Cleaner():
def __init__(self, user_dir, date, mailer, white_list, keep_files):
self.user_dir = user_dir
self.date = date
self.white_list = white_list
self.keep_files = keep_files
self.mailer = mailer
def run(self, test=True, send_mail=False):
username = self.user_dir.split('/')[-1]
if username in self.white_list:
print(f' WHITE LIST: {username}')
return
remove_objs = []
for obj in sorted(os.listdir(self.user_dir)):
if obj in self.keep_files:
continue
obj = obj.replace(' ', '\ ')
# stat {file or dir}:
# get Create, modified information
# grep Modify:
# get Modified time
# awk:
# -F ' ': use space to split the data
# print $2: column 2 (get date)
modify_date = subprocess.getoutput(f"stat {self.user_dir}/{obj} | grep Modify | awk -F ' ' '{{print $2}}'" )
if modify_date < self.date:
remove_objs.append((obj, modify_date))
print(f' {modify_date} {obj}')
if send_mail and len(remove_objs) != 0:
if test:
receiver = 'snsd0805@cmlab.csie.ntu.edu.tw'
else:
receiver = f'{username}@cmlab.csie.ntu.edu.tw'
sender = 'unix_manager@cmlab.csie.ntu.edu.tw'
subject = f'[網管通知] CML Server 清理預計被移除的內容({username})'
msg = ''
for obj, date in remove_objs:
msg += f'