Browse Source

Create kernel-clean-v3.sh

tteckster 3 years ago
parent
commit
7f41706572
1 changed files with 114 additions and 0 deletions
  1. 114 0
      misc/kernel-clean-v3.sh

+ 114 - 0
misc/kernel-clean-v3.sh

@@ -0,0 +1,114 @@
+#!/usr/bin/env bash -ex
+set -euo pipefail
+shopt -s inherit_errexit nullglob
+YW=`echo "\033[33m"`
+BL=`echo "\033[36m"`
+RD=`echo "\033[01;31m"`
+BGN=`echo "\033[4;92m"`
+GN=`echo "\033[1;92m"`
+DGN=`echo "\033[32m"`
+CL=`echo "\033[m"`
+BFR="\\r\\033[K"
+HOLD="-"
+CM="${GN}✓${CL}"
+CROSS="${RD}✗${CL}"
+PARTY="🎉"
+current_kernel=$(uname -r)
+pve=$(pveversion)
+
+while true; do
+    read -p "This will Clean Unused Kernel Images. Proceed(y/n)?" yn
+    case $yn in
+        [Yy]* ) break;;
+        [Nn]* ) exit;;
+        * ) echo -e "${RD}Please answer y/n${CL}";;
+    esac
+done
+clear
+
+function header_info {
+echo -e "${RD}
+  _  __                    _    _____ _                  
+ | |/ /                   | |  / ____| |                 
+ |   / ___ _ __ _ __   ___| | | |    | | ___  __ _ _ __  
+ |  < / _ \  __|  _ \ / _ \ | | |    | |/ _ \/ _  |  _ \ 
+ |   \  __/ |  | | | |  __/ | | |____| |  __/ (_| | | | |
+ |_|\_\___|_|  |_| |_|\___|_|v3\_____|_|\___|\__,_|_| |_|
+
+${CL}"
+}
+
+function msg_info() {
+    local msg="$1"
+    echo -ne " ${HOLD} ${YW}${msg}..."
+}
+
+function msg_ok() {
+    local msg="$1"
+    echo -e "${BFR} ${CM} ${GN}${msg}${CL}"
+}
+
+function check_root() {
+        if [[ $EUID -ne 0 ]]; then
+                echo -e "${CROSS}${RD}Error: This script must be ran as the root user.\n${CL}" 
+                exit 1
+        else
+            header_info
+            kernel_info
+            kernel_clean
+        fi
+}
+
+function kernel_info() {
+    latest_kernel=$(dpkg --list| grep 'kernel-.*-pve' | awk '{print $2}' | tac | head -n 1)
+    echo -e "${YW}PVE Version: ${BL}$pve\n${CL}"
+    if [[ "$current_kernel" == *"pve"* ]]; then
+      if [[ "$latest_kernel" != *"$current_kernel"* ]]; then
+        echo -e "${GN}Latest Kernel: $latest_kernel\n${CL}"
+      fi
+    else
+        echo -e "\n${CROSS}${RD}ERROR: No PVE Kernel Found\n${CL}"
+        exit 1
+    fi
+}
+
+function kernel_clean() {
+    kernels=$(dpkg --list| grep 'kernel-.*-pve' | awk '{print $2}' | sort -V)
+    remove_kernels=""
+    for kernel in $kernels
+      do
+        if [ "$(echo $kernel | grep $current_kernel)" ]; then
+            break
+        else
+            echo -e "${BL}'$kernel' ${CL}${YW}has been added to the remove Kernel list\n${CL}"
+                    remove_kernels+=" $kernel"
+        fi
+    done
+msg_ok "Kernel Search Completed\n"
+    if [[ "$remove_kernels" != *"pve"* ]]; then
+        echo -e "${PARTY}  ${GN}It appears there are no old Kernels on your system. \n${CL}"
+        msg_info "Exiting"
+        sleep 2
+        msg_ok "Done"
+    else
+    read -p "${YW}Would you like to remove the${BL} $(echo $remove_kernels | awk '{print NF}') ${CL}${YW}selected Kernels listed above? [y/n]: ${CL}" -n 1 -r
+        echo
+      if [[ $REPLY =~ ^[Yy]$ ]]; then
+        msg_info "Removing ${CL}${RD}$(echo $remove_kernels | awk '{print NF}') ${CL}${YW}old Kernels...${CL}"
+        /usr/bin/apt purge -y $remove_kernels > /dev/null 2>&1
+        msg_ok "Successfully Removed Kernels"
+        msg_info "Updating GRUB"
+        /usr/sbin/update-grub > /dev/null 2>&1
+        msg_ok "Successfully Updated GRUB"
+        msg_info "Exiting"
+        sleep 2
+        msg_ok "Done"
+      else
+        msg_info "Exiting"
+        sleep 2
+        msg_ok "Done"
+      fi
+    fi
+}
+
+check_root