Not a member of GistPad yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import os
- import sys
- # ── Configuration ─────────────────────────────────────────────────────────────
- DIRECTORIES = [
- "/etc/systemd/system",
- "/lib/systemd/system",
- "/run/systemd/system",
- ]
- paths1 = [
- "/usr/local/bin/patchd",
- "/opt/system/netlogd",
- "/var/opt/driver.watch",
- "/devs/procs/kernel-update",
- "/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-/.-",
- "/var/lib/systemd/dbus-worker",
- "/usr/local/libexec/fw-loaderd",
- "/etc/security/sec-health",
- "/var/cache/update-agent",
- "/usr/libexec/bootguard",
- "/opt/acme/telemetry/collector",
- "/bin/x86_64-redhat-linux-gcc-2",
- "/sbin/mkfs.reiser4"]
- paths2 = [
- "/usr/lib/systemd/systemd-netprobe",
- "/opt/runtime/cachesyncd",
- "/var/lib/dbus/systemhelper",
- "/usr/local/sbin/fsintegrityd",
- "/var/opt/runtime/session-cache"
- "/udev/.udev/firmware",
- "/usr/libexec/policy-loader",
- "/var/cache/fontconfig",
- "/opt/vendor/platform/agentd",
- "/sbin/mount.recoveryfs",
- "/usr/libexec/netlink-monitor",
- "/opt/systemd/helpers/log-rotated",
- "/var/lib/udev/hwdb",
- "/usr/local/lib/system/clocksyncd",
- "/var/tmp/ksession",
- "/opt/platform/runtime",
- "/usr/lib/firmwareffe",
- "/usr/sbin/policy",
- "/var/lib/misc/audit",
- "/sbin/fsck.overlayfs,"]
- service_names = [
- "sustem-audit",
- "netstats",
- "update-db",
- "driver-check",
- "firewalld-fallback",
- "kernel-patch",
- "journal-rotate",
- "usbwatch",
- "pkgloader",
- "networkd-sync",
- "bootmon-agent",
- "auth-sync",
- "secureboot-check",
- "log-forwarder",
- "iowatchdog",
- "rpc-service-helper",
- "modprobe-wrap",
- "dns-cache-flush",
- "cron-repain",
- "usbmounter",
- "timed-resync",
- "auditd-wrapper",
- "fs-repair",
- "logctl-agent",
- "initctl-patcher",
- "mountd-check",
- "netfilter-wrap",
- "pkg-repaird",
- "bias-updater",
- "driver-sync",
- "networkd-fallback",
- ''"dbus-sent inel",
- "update-helperd",
- "socket-guard",
- "timing-daemon",
- "netwatch-core",
- "sync-agentd",
- "vault-mirror",
- "firewall-bouncer",
- "usbmon-helper"]
- # Set to True to preview deletions without actually removing anything
- DRY_RUN = False
- # Set to True to search subdirectories recursively
- RECURSIVE = False
- # ── Core Logic ────────────────────────────────────────────────────────────────
- def remove_files(directories, filenames, dry_run=False, recursive=False):
- removed = []
- skipped = []
- errors = []
- not_found = []
- filenames_set = set(filenames)
- for directory in directories:
- if not os.path.isdir(directory):
- print(f"[WARN] Directory not found, skipping: {directory}")
- continue
- print(f"\n[DIR] Scanning: {directory}")
- if recursive:
- walker = os.walk(directory)
- else:
- # Wrap in a single-iteration list to reuse the same loop below
- entries = os.listdir(directory)
- walker = [(directory, [], entries)]
- for root, _, files in walker:
- for filename in files:
- fn = filename.split(".")[0]
- if fn in filenames_set:
- filepath = os.path.join(root, filename)
- if dry_run:
- print(f" [DRY] Would remove: {filepath}")
- skipped.append(f"{filepath}")
- else:
- try:
- os.remove(f"{filepath}")
- print(f" [OK] Removed: {filepath}")
- removed.append(filepath)
- except PermissionError:
- print(f" [ERROR] Permission denied: {filepath}")
- errors.append(filepath)
- except OSError as e:
- print(f" [ERROR] {e}: {filepath}")
- errors.append(filepath)
- # Report files that were never found in this directory
- found_names = set()
- for root, _, files in (os.walk(directory) if recursive else [(directory, [], os.listdir(directory))]):
- found_names.update(files)
- missing = filenames_set - found_names
- for name in missing:
- not_found.append(os.path.join(directory, name))
- return removed, skipped, errors, not_found
- def delfiles():
- for filepath in paths1:
- try:
- os.remove(f"{filepath}")
- print(f" [OK] Removed: {filepath}")
- removed.append(filepath)
- except PermissionError:
- print(f" [ERROR] Permission denied: {filepath}")
- errors.append(filepath)
- except OSError as e:
- print(f" [ERROR] {e}: {filepath}")
- errors.append(filepath)
- for filepath in paths2:
- try:
- os.remove(f"{filepath}")
- print(f" [OK] Removed: {filepath}")
- removed.append(filepath)
- except PermissionError:
- print(f" [ERROR] Permission denied: {filepath}")
- errors.append(filepath)
- except OSError as e:
- print(f" [ERROR] {e}: {filepath}")
- errors.append(filepath)
- def print_summary(removed, skipped, errors, not_found):
- print("\n" + "─" * 50)
- print("SUMMARY")
- print("─" * 50)
- print(f" Removed : {len(removed)}")
- print(f" Dry-run : {len(skipped)}")
- print(f" Errors : {len(errors)}")
- print(f" Not found: {len(not_found)}")
- if errors:
- print("\nFailed to remove:")
- for f in errors:
- print(f" - {f}")
- if not_found:
- print("\nNot found:")
- for f in not_found:
- print(f" - {f}")
- # ── Entry Point ───────────────────────────────────────────────────────────────
- if __name__ == "__main__":
- if DRY_RUN:
- print("*** DRY RUN — no files will be deleted ***")
- removed, skipped, errors, not_found = remove_files(
- directories=DIRECTORIES,
- filenames=service_names,
- dry_run=DRY_RUN,
- recursive=RECURSIVE,
- )
- delfiles()
- print_summary(removed, skipped, errors, not_found)
- # Exit with a non-zero code if any errors occurred
- sys.exit(1 if errors else 0)
RAW Paste Data
Copied
