clash-down.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # -*- coding: utf-8 -*-
  2. import subprocess
  3. import multiprocessing
  4. import os
  5. import json
  6. def load_config():
  7. with open("config.json", "r") as f:
  8. return json.load(f)
  9. config = load_config()
  10. PREFIX = "clash-multi-"
  11. START = 1
  12. END = config["total_container"]
  13. def stop_and_remove_container(container_id):
  14. container_name = f"{PREFIX}{container_id}"
  15. print(f"Processing container: {container_name}")
  16. try:
  17. rm_cmd = ["docker", "rm", "-f", container_name]
  18. subprocess.run(rm_cmd, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.PIPE)
  19. print(f"Successfully removed container: {container_name}")
  20. except subprocess.CalledProcessError as e:
  21. error_message = e.stderr.decode().strip() if e.stderr else "Unknown error"
  22. print(f"Error processing container {container_name}: {error_message}")
  23. def main():
  24. with multiprocessing.Pool(processes=os.cpu_count() or 4) as pool:
  25. pool.map(stop_and_remove_container, range(START, END + 1))
  26. if __name__ == "__main__":
  27. main()