Create clean-lxcs.sh
This commit is contained in:
parent
f750bb6159
commit
c360a680f8
1 changed files with 70 additions and 0 deletions
70
misc/clean-lxcs.sh
Normal file
70
misc/clean-lxcs.sh
Normal file
|
@ -0,0 +1,70 @@
|
|||
#!/bin/bash
|
||||
function header_info {
|
||||
cat <<"EOF"
|
||||
________ __ _ ________
|
||||
/ ____/ /__ ____ _____ / / | |/ / ____/
|
||||
/ / / / _ \/ __ `/ __ \ / / | / /
|
||||
/ /___/ / __/ /_/ / / / / / /___/ / /___
|
||||
\____/_/\___/\__,_/_/ /_/ /_____/_/|_\____/
|
||||
|
||||
EOF
|
||||
}
|
||||
set -e
|
||||
YW=$(echo "\033[33m")
|
||||
BL=$(echo "\033[36m")
|
||||
RD=$(echo "\033[01;31m")
|
||||
CM='\xE2\x9C\x94\033'
|
||||
GN=$(echo "\033[1;92m")
|
||||
CL=$(echo "\033[m")
|
||||
clear
|
||||
header_info
|
||||
while true; do
|
||||
read -p "This Will Clean logs, cache and update apt lists on all LXC Containers. Proceed(y/n)?" yn
|
||||
case $yn in
|
||||
[Yy]*) break ;;
|
||||
[Nn]*) exit ;;
|
||||
*) echo "Please answer yes or no." ;;
|
||||
esac
|
||||
done
|
||||
clear
|
||||
containers=$(pct list | tail -n +2 | cut -f1 -d' ')
|
||||
|
||||
function clean_container() {
|
||||
container=$1
|
||||
clear
|
||||
header_info
|
||||
echo -e "${BL}[Info]${GN} Cleaning${BL} $container${CL} \n"
|
||||
pct exec $container -- bash -c "apt-get -y autoremove && apt-get -y autoclean && rm -rf /var/{cache,log}/* /var/lib/apt/lists/* && apt-get update"
|
||||
}
|
||||
read -p "Skip stopped containers? " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
skip=no
|
||||
else
|
||||
skip=yes
|
||||
fi
|
||||
|
||||
for container in $containers; do
|
||||
status=$(pct status $container)
|
||||
if [ "$skip" == "no" ]; then
|
||||
if [ "$status" == "status: stopped" ]; then
|
||||
echo -e "${BL}[Info]${GN} Starting${BL} $container ${CL} \n"
|
||||
pct start $container
|
||||
echo -e "${BL}[Info]${GN} Waiting For${BL} $container${CL}${GN} To Start ${CL} \n"
|
||||
sleep 5
|
||||
clean_container $container
|
||||
echo -e "${BL}[Info]${GN} Shutting down${BL} $container ${CL} \n"
|
||||
pct shutdown $container &
|
||||
elif [ "$status" == "status: running" ]; then
|
||||
clean_container $container
|
||||
fi
|
||||
fi
|
||||
if [ "$skip" == "yes" ]; then
|
||||
if [ "$status" == "status: running" ]; then
|
||||
clean_container $container
|
||||
fi
|
||||
fi
|
||||
done
|
||||
wait
|
||||
|
||||
echo -e "${GN} Finished, All Containers Cleaned. ${CL} \n"
|
Loading…
Reference in a new issue