Browse Source

code refactoring

tteckster 2 years ago
parent
commit
1be65d04cc
1 changed files with 11 additions and 27 deletions
  1. 11 27
      misc/update-lxcs.sh

+ 11 - 27
misc/update-lxcs.sh

@@ -1,6 +1,7 @@
 #!/usr/bin/env bash
 function header_info {
-  cat <<"EOF"
+clear
+cat <<"EOF"
    __  __          __      __          __   _  ________
   / / / /___  ____/ /___ _/ /____     / /  | |/ / ____/
  / / / / __ \/ __  / __ `/ __/ _ \   / /   |   / /     
@@ -17,7 +18,6 @@ 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 Update All LXC Containers. Proceed(y/n)?" yn
@@ -29,26 +29,19 @@ while true; do
 done
 clear
 containers=$(pct list | tail -n +2 | cut -f1 -d' ')
-
 function update_container() {
   container=$1
   clear
   header_info
-  name=`pct exec $container hostname`
+  name=$(pct exec "$container" hostname)
   echo -e "${BL}[Info]${GN} Updating ${BL}$container${CL} : ${GN}$name${CL} \n"
-  pct config $container > temp
-  os=`awk '/^ostype/' temp | cut -d' ' -f2`
-  if [ "$os" == "alpine" ]; then
-        pct exec $container -- ash -c "apk update && apk upgrade"
-  elif [ "$os" == "ubuntu" ] || [ "$os" == "debian" ] || [ "$os" == "devuan" ]; then
-        pct exec $container -- bash -c "apt-get update && apt-get -y upgrade"
-  elif [ "$os" == "fedora" ] || [ "$os" == "rocky" ] || [ "$os" == "centos" ] || [ "$os" == "alma" ]; then
-        pct exec $container -- bash -c "dnf -y update && dnf -y upgrade"
-  elif [ "$os" == "archlinux" ]; then
-        pct exec $container -- bash -c "pacman -Syyu --noconfirm"
-  else
-        pct exec $container -- bash -c "yum -y update"
-  fi
+  os=$(pct config "$container" | awk '/^ostype/ {print $2}')
+  case "$os" in
+    alpine)  pct exec "$container" -- ash -c "apk update && apk upgrade" ;;
+    archlinux)  pct exec "$container" -- bash -c "pacman -Syyu --noconfirm";;
+    fedora|rocky|centos|alma)  pct exec "$container" -- bash -c "dnf -y update && dnf -y upgrade" ;;
+    ubuntu|debian|devuan)  pct exec "$container" -- bash -c "apt-get update && apt-get -y upgrade" ;;
+  esac
 }
 header_info
 read -p "Skip stopped containers? [y/N]" -n 1 -r
@@ -58,11 +51,9 @@ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
 else
   skip=yes
 fi
-
 for container in $containers; do
   status=$(pct status $container)
-  if [ "$skip" == "no" ]; then
-    if [ "$status" == "status: stopped" ]; then
+  if [ "$skip" == "no" ] && [ "$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"
@@ -72,16 +63,9 @@ for container in $containers; do
       pct shutdown $container &
     elif [ "$status" == "status: running" ]; then
       update_container $container
-    fi
-  fi
-  if [ "$skip" == "yes" ]; then
-    if [ "$status" == "status: running" ]; then
-      update_container $container
-    fi
   fi
 done
 wait
 rm -rf temp
-clear
 header_info
 echo -e "${GN} Finished, All Containers Updated. ${CL} \n"