From 899c015fb9f202398238f4ecda43fdff18cafb45 Mon Sep 17 00:00:00 2001 From: tteckster Date: Mon, 24 Apr 2023 12:06:45 -0400 Subject: [PATCH] Update post-pve-install.sh Code refactoring --- misc/post-pve-install.sh | 226 ++++++++++++++++++++++++++++----------- 1 file changed, 163 insertions(+), 63 deletions(-) diff --git a/misc/post-pve-install.sh b/misc/post-pve-install.sh index 2e03f852..e4787cad 100644 --- a/misc/post-pve-install.sh +++ b/misc/post-pve-install.sh @@ -5,8 +5,9 @@ # License: MIT # https://github.com/tteck/Proxmox/raw/main/LICENSE -function header_info { - cat <<"EOF" +header_info() { + clear + cat <<"EOF" ____ _ _____________ ____ __ ____ __ ____ / __ \ | / / ____/__ / / __ \____ _____/ /_ / _/___ _____/ /_____ _/ / / / /_/ / | / / __/ / / / /_/ / __ \/ ___/ __/ / // __ \/ ___/ __/ __ / / / @@ -15,120 +16,219 @@ function header_info { EOF } -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") +YW=$(echo "\033[33m") GN=$(echo "\033[1;92m") -DGN=$(echo "\033[32m") CL=$(echo "\033[m") BFR="\\r\\033[K" HOLD="-" CM="${GN}āœ“${CL}" CROSS="${RD}āœ—${CL}" -clear -header_info -echo -e "${BL}This script will Perform Post Install Routines.${CL}" -while true; do - read -p "Start the PVE7 Post Install Script (y/n)?" yn - case $yn in - [Yy]*) break ;; - [Nn]*) exit ;; - *) echo "Please answer yes or no." ;; - esac -done -if ! command -v pveversion >/dev/null 2>&1; then - echo -e "\nšŸ›‘ No PVE Detected, Wrong Script!\n" - exit 1 -fi +set -euo pipefail +shopt -s inherit_errexit nullglob -if [ $(pveversion | grep "pve-manager/7" | wc -l) -ne 1 ]; then - echo -e "\n${RD}āš  This version of Proxmox Virtual Environment is not supported" - echo -e "Requires PVE Version: 7.XX${CL}" - echo -e "\nExiting..." - sleep 3 - exit -fi - -function msg_info() { +msg_info() { local msg="$1" echo -ne " ${HOLD} ${YW}${msg}..." } -function msg_ok() { +msg_ok() { local msg="$1" echo -e "${BFR} ${CM} ${GN}${msg}${CL}" } -clear -header_info -read -r -p "Disable Enterprise Repository? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then +msg_error() { + local msg="$1" + echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}" +} + +exit_script() { + clear + echo -e "āš  User exited script \n" + exit +} + +start_routines() { + header_info + CHOICE=$( + whiptail --title "Proxmox VE 7 Post Install" --menu "\nDisable Enterprise Repository?" 11 58 2 \ + "yes" " " \ + "no" " " 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + exit_script + fi + case $CHOICE in + yes) msg_info "Disabling Enterprise Repository" - sleep 2 sed -i 's/^deb/#deb/g' /etc/apt/sources.list.d/pve-enterprise.list msg_ok "Disabled Enterprise Repository" -fi + ;; + no) + msg_error "Selected no to Disabling Enterprise Repository" + ;; + esac -read -r -p "Add/Correct PVE7 Sources (sources.list)? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + CHOICE=$( + whiptail --title "Proxmox VE 7 Post Install" --menu "\nAdd/Correct PVE7 Sources (sources.list)?" 11 58 2 \ + "yes" " " \ + "no" " " 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + exit_script + fi + case $CHOICE in + yes) msg_info "Adding or Correcting PVE7 Sources" cat </etc/apt/sources.list deb http://ftp.debian.org/debian bullseye main contrib deb http://ftp.debian.org/debian bullseye-updates main contrib deb http://security.debian.org/debian-security bullseye-security main contrib EOF - sleep 2 msg_ok "Added or Corrected PVE7 Sources" -fi + ;; + no) + msg_error "Selected no to Correcting PVE7 Sources" + ;; + esac - -read -r -p "Enable No-Subscription Repository? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + CHOICE=$( + whiptail --title "Proxmox VE 7 Post Install" --menu "\nEnable No-Subscription Repository?" 11 58 2 \ + "yes" " " \ + "no" " " 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + exit_script + fi + case $CHOICE in + yes) msg_info "Enabling No-Subscription Repository" cat <>/etc/apt/sources.list deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription EOF - sleep 2 msg_ok "Enabled No-Subscription Repository" -fi + ;; + no) + msg_error "Selected no to Enabling No-Subscription Repository" + ;; + esac -read -r -p "Add (Disabled) Beta/Test Repository? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + CHOICE=$( + whiptail --title "Proxmox VE 7 Post Install" --menu "\nAdd (Disabled) Beta/Test Repository?" 11 58 2 \ + "yes" " " \ + "no" " " 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + exit_script + fi + case $CHOICE in + yes) msg_info "Adding Beta/Test Repository and set disabled" cat <>/etc/apt/sources.list # deb http://download.proxmox.com/debian/pve bullseye pvetest EOF - sleep 2 msg_ok "Added Beta/Test Repository" -fi + ;; + no) + msg_error "Selected no to Adding Beta/Test Repository" + ;; + esac -read -r -p "Disable Subscription Nag? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + CHOICE=$( + whiptail --title "Proxmox VE 7 Post Install" --menu "\nDisable Subscription Nag?" 11 58 2 \ + "yes" " " \ + "no" " " 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + exit_script + fi + case $CHOICE in + yes) msg_info "Disabling Subscription Nag" echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from UI...'; sed -i '/data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script apt --reinstall install proxmox-widget-toolkit &>/dev/null msg_ok "Disabled Subscription Nag (Delete browser cache)" -fi + ;; + no) + msg_error "Selected no to Disabling Subscription Nag" + ;; + esac -read -r -p "Update Proxmox VE 7 now? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + CHOICE=$( + whiptail --title "Proxmox VE 7 Post Install" --menu "\nUpdate Proxmox VE 7 now?" 11 58 2 \ + "yes" " " \ + "no" " " 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + exit_script + fi + case $CHOICE in + yes) msg_info "Updating Proxmox VE 7 (Patience)" apt-get update &>/dev/null apt-get -y dist-upgrade &>/dev/null - msg_ok "Updated Proxmox VE 7 (āš  Reboot Recommended)" -fi + msg_ok "Updated Proxmox VE 7 (Reboot Recommended)" + ;; + no) + msg_error "Selected no to Updating Proxmox VE 7" + ;; + esac -read -r -p "Reboot Proxmox VE 7 now? " prompt -if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then + CHOICE=$( + whiptail --title "Proxmox VE 7 Post Install" --menu "\nReboot Proxmox VE 7 now?" 11 58 2 \ + "yes" " " \ + "no" " " 3>&2 2>&1 1>&3 + ) + exit_status=$? + if [ $exit_status == 1 ]; then + exit_script + fi + case $CHOICE in + yes) msg_info "Rebooting Proxmox VE 7" sleep 2 msg_ok "Completed Post Install Routines" reboot + ;; + no) + msg_error "Selected no to Rebooting Proxmox VE 7" + msg_ok "Completed Post Install Routines" + ;; + esac +} + +header_info +echo -e "\nThis script will Perform Post Install Routines.\n" +while true; do + read -p "Start the PVE7 Post Install Script (y/n)?" yn + case $yn in + [Yy]*) break ;; + [Nn]*) exit_script ;; + *) echo "Please answer yes or no." ;; + esac +done + +if ! command -v pveversion >/dev/null 2>&1; then + header_info + msg_error "\n No PVE Detected!\n" + exit fi -sleep 2 -msg_ok "Completed Post Install Routines" +if [ $(pveversion | grep "pve-manager/7" | wc -l) -ne 1 ]; then + header_info + msg_error "This version of Proxmox Virtual Environment is not supported" + echo -e " Requires PVE Version: 7.XX" + echo -e "\nExiting..." + sleep 3 + exit +fi + +start_routines