Updated framework
This commit is contained in:
@@ -5,74 +5,118 @@ set -e
|
||||
# ----------------------------------------------------------------------------------------------
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
source "$SCRIPT_DIR/../Master.conf"
|
||||
source "$SCRIPT_DIR/../common.sh"
|
||||
|
||||
# Load central config
|
||||
load_master_conf
|
||||
|
||||
# Parse CLI args (supports --dry-run)
|
||||
parse_args "$@"
|
||||
|
||||
# Colors for output
|
||||
RED="\033[0;31m"
|
||||
GREEN="\033[0;32m"
|
||||
YELLOW="\033[1;33m"
|
||||
RESET="\033[0m"
|
||||
|
||||
# Log files to clear (can also be overridden in Master.conf)
|
||||
LOG_FILES=("${LOG_FILES[@]:-/var/log/syslog /var/log/messages /var/log/dmesg}")
|
||||
|
||||
# Require root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
printf "${RED}❌ Please run as root.${RESET}\n"
|
||||
exit 1
|
||||
# STATUS MODE
|
||||
if [[ "$SHOW_STATUS" == true ]]; then
|
||||
echo
|
||||
echo "=================================================="
|
||||
echo " ℹ️ LOG CLEANER STATUS"
|
||||
echo "--------------------------------------------------"
|
||||
echo " 📄 System Logs: ${LOG_FILES[*]}"
|
||||
echo " 🐳 Docker Logs: /var/lib/docker/containers"
|
||||
echo " 🧪 Dry Run: $DRY_RUN"
|
||||
echo "=================================================="
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}Starting log cleanup...${RESET}\n"
|
||||
# CONFIG
|
||||
LOG_FILES=("${LOG_FILES[@]:-/var/log/syslog /var/log/messages /var/log/dmesg}")
|
||||
|
||||
# Functions
|
||||
# ROOT CHECK
|
||||
if [[ "$EUID" -ne 0 ]]; then
|
||||
error "🔴 Must be run as root"
|
||||
fi
|
||||
|
||||
# HEADER
|
||||
echo
|
||||
echo "============================================================"
|
||||
echo " 🚀 LOG CLEANER STARTING"
|
||||
echo "------------------------------------------------------------"
|
||||
echo " 📄 System Logs: ${LOG_FILES[*]}"
|
||||
echo " 🐳 Docker Logs: enabled"
|
||||
echo " 🧪 Dry Run: $DRY_RUN"
|
||||
echo "============================================================"
|
||||
|
||||
log "ℹ️ Starting log cleanup"
|
||||
|
||||
# FUNCTIONS
|
||||
clear_file() {
|
||||
local file="$1"
|
||||
if [ ! -f "$file" ]; then
|
||||
printf "${RED}Not found:${RESET} %s\n" "$file"
|
||||
|
||||
if [[ ! -f "$file" ]]; then
|
||||
warn "🟡 Not found: $file"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
printf "${YELLOW}Would clear:${RESET} %s\n" "$file"
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
warn "🧪 Would clear: $file"
|
||||
else
|
||||
: > "$file"
|
||||
printf "${GREEN}Cleared:${RESET} %s\n" "$file"
|
||||
info "🟢 Cleared: $file"
|
||||
fi
|
||||
}
|
||||
|
||||
clear_docker_logs() {
|
||||
if [ ! -d /var/lib/docker/containers ]; then
|
||||
printf "${RED}Docker containers directory not found. Skipping Docker log cleanup.${RESET}\n"
|
||||
|
||||
if [[ ! -d /var/lib/docker/containers ]]; then
|
||||
warn "🟡 Docker directory not found — skipping"
|
||||
return
|
||||
fi
|
||||
|
||||
local files
|
||||
files=$(find /var/lib/docker/containers/ -name "*-json.log" 2>/dev/null)
|
||||
files=$(find /var/lib/docker/containers/ -name "*-json.log" 2>/dev/null || true)
|
||||
|
||||
if [[ -z "$files" ]]; then
|
||||
warn "🟡 No Docker logs found"
|
||||
return
|
||||
fi
|
||||
|
||||
for file in $files; do
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
printf "${YELLOW}Would clear Docker log:${RESET} %s\n" "$file"
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
warn "🧪 Would clear Docker log: $file"
|
||||
else
|
||||
: > "$file"
|
||||
printf "${GREEN}Cleared Docker log:${RESET} %s\n" "$file"
|
||||
info "🟢 Cleared Docker log: $file"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# MAIN
|
||||
# EXECUTION
|
||||
START_TIME=$(date +%s)
|
||||
|
||||
for log in "${LOG_FILES[@]}"; do
|
||||
clear_file "$log"
|
||||
done
|
||||
|
||||
clear_docker_logs
|
||||
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
printf "\n${YELLOW}🧪 Dry run complete. No files were cleared.${RESET}\n"
|
||||
END_TIME=$(date +%s)
|
||||
DURATION=$((END_TIME - START_TIME))
|
||||
|
||||
# SUMMARY
|
||||
echo
|
||||
echo "============================================================"
|
||||
|
||||
if [[ "$DRY_RUN" == true ]]; then
|
||||
echo " 🟡 LOG CLEANER SUMMARY"
|
||||
echo "------------------------------------------------------------"
|
||||
echo " 📄 Logs: ${LOG_FILES[*]}"
|
||||
echo " 🐳 Docker: skipped (dry run)"
|
||||
echo " 📡 Status: 🟡 DRY RUN"
|
||||
else
|
||||
printf "\n${GREEN}🎉 Done clearing logs.${RESET}\n"
|
||||
fi
|
||||
echo " 🟢 LOG CLEANER SUMMARY"
|
||||
echo "------------------------------------------------------------"
|
||||
echo " 📄 Logs: ${LOG_FILES[*]}"
|
||||
echo " 🐳 Docker: cleaned"
|
||||
echo " ⏱ Duration: ${DURATION}s"
|
||||
echo " 📡 Status: 🟢 SUCCESS"
|
||||
fi
|
||||
|
||||
echo "============================================================"
|
||||
|
||||
info "ℹ️ Log cleanup complete"
|
||||
Reference in New Issue
Block a user