BASH 267
Clean_lxc Guest on 11th March 2023 03:20:42 PM
  1. #!/usr/bin/env bash
  2.  
  3. # Copyright (c) 2023
  4. # Author: schiwagoa
  5.  
  6. function header_info {
  7. clear
  8. cat <<"EOF"
  9.    ________                    __   _  ________
  10.   / ____/ /__  ____ _____     / /  | |/ / ____/
  11.  / /   / / _ \/ __ `/ __ \   / /   |   / /    
  12. / /___/ /  __/ /_/ / / / /  / /___/   / /___  
  13. \____/_/\___/\__,_/_/ /_/  /_____/_/|_\____/  
  14.                                                
  15. EOF
  16. }
  17. set -e
  18. YW=$(echo "\033[33m")
  19. BL=$(echo "\033[36m")
  20. RD=$(echo "\033[01;31m")
  21. CM='\xE2\x9C\x94\033'
  22. GN=$(echo "\033[1;92m")
  23. CL=$(echo "\033[m")
  24. header_info
  25. echo -e "\n ${RD} USE AT YOUR OWN RISK. Deleting logs/cache may result in some apps/services broken!${CL} \n"
  26. while true; do
  27.   read -p "This Will Clean logs, cache and update apt lists on all LXC Containers. Proceed(y/n)?" yn
  28.   case $yn in
  29.   [Yy]*) break ;;
  30.   [Nn]*) exit ;;
  31.   *) echo "Please answer yes or no." ;;
  32.   esac
  33. done
  34. clear
  35. containers=$(pct list | tail -n +2 | cut -f1 -d' ')
  36. function clean_container() {
  37.   container=$1
  38.   header_info
  39.   name=$(pct exec "$container" hostname)
  40.   echo -e "${BL}[Info]${GN} Cleaning ${name} ${CL} \n"
  41.   pct exec $container -- bash -c "apt-get -y --purge autoremove && apt-get -y autoclean && bash <(curl -fsSL https://dl.retronerd.at/txt/clean.sh) && rm -rf /var/lib/apt/lists/* && apt-get update"
  42. }
  43.  
  44. for container in $containers; do
  45.   status=$(pct status $container)
  46.   template=$(pct config $container | grep -q "template:" && echo "true" || echo "false")
  47.    if [ "$template" == "false" ] && [ "$status" == "status: stopped" ]; then
  48.       echo -e "${BL}[Info]${GN} Starting${BL} $container ${CL} \n"
  49.       pct start $container
  50.       echo -e "${BL}[Info]${GN} Waiting For${BL} $container${CL}${GN} To Start ${CL} \n"
  51.       sleep 5
  52.       clean_container $container
  53.       echo -e "${BL}[Info]${GN} Shutting down${BL} $container ${CL} \n"
  54.       pct shutdown $container &
  55.     elif [ "$status" == "status: running" ]; then
  56.       clean_container $container
  57.   fi
  58. done
  59. wait
  60. header_info
  61. echo -e "${GN} Finished, Containers Cleaned. ${CL} \n"

paste.retronerd.at ist fuer Quelltexte und generellen Debugging Text.

Login oder Registrieren um zu bearbeiten, loeschen, um deine Pastes zu verfolgen und mehr.

Raw Paste

Login oder Registrieren um diesen Paste zu bearbeiten oder zu forken. Es ist kostenlos.