Added release-upgrade scripts
This commit is contained in:
99
ReleaseUpgradeALL.sh
Executable file
99
ReleaseUpgradeALL.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/bin/bash
|
||||
|
||||
#########################################
|
||||
# ProxMox update tools #
|
||||
# Upgrade OS release on all CT`s/VM`s #
|
||||
# @author: Bram Prieshof #
|
||||
#########################################
|
||||
|
||||
#Dirs
|
||||
WorkDir=$(dirname $0)
|
||||
LogDir=$WorkDir/RelUpgradelogs
|
||||
#Load functions
|
||||
source $WorkDir/functions.sh
|
||||
#Create Log folder
|
||||
if [ ! -d $LogDir ]; then
|
||||
mkdir $LogDir
|
||||
fi
|
||||
|
||||
#ID list of excluded VM/CT's
|
||||
ExcludeList=()
|
||||
|
||||
#Get what sould be updated
|
||||
UpdateVM=true
|
||||
UpdateCT=true
|
||||
|
||||
while true; do
|
||||
read -p "Wich software should be updated (D)Debian, (A)Alpine or (B)oth? " sofq
|
||||
case $sofq in
|
||||
[Dd]* )
|
||||
DoDebianReleaseUpdate=true
|
||||
DoAlpineReleaseUpdate=false
|
||||
break;;
|
||||
[Aa]* )
|
||||
DoDebianReleaseUpdate=true
|
||||
DoAlpineReleaseUpdate=true
|
||||
break;;
|
||||
[Bb]* )
|
||||
DoDebianReleaseUpdate=true
|
||||
DoAlpineReleaseUpdate=true
|
||||
break;;
|
||||
* ) echo "Please answer with (D)Debian, (A)Alpine or (B)oth.";;
|
||||
esac
|
||||
done
|
||||
|
||||
#Get required versions to upgrade to
|
||||
if $DoDebianReleaseUpdate; then
|
||||
echo "Enter the Debian version to upgrade to"
|
||||
read NewDebianVersion
|
||||
while true; do
|
||||
read -p "Upgrade to Debian $NewDebianVersion, is this correct? -> yes/no?" yn
|
||||
case $yn in
|
||||
[Nn]* )
|
||||
echo "Enter the Debian version to upgrade to"
|
||||
read NewDebianVersion
|
||||
;;
|
||||
[Yy]* ) break;;
|
||||
* ) echo "Choose yes or no.";;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if $DoAlpineReleaseUpdate; then
|
||||
echo "Enter the Alpine version to upgrade to"
|
||||
read NewAlpineVersion
|
||||
while true; do
|
||||
read -p "Upgrade to Alpine $NewAlpineVersion, is this correct? -> yes/no?" yn
|
||||
case $yn in
|
||||
[Nn]* )
|
||||
echo "Enter the Alpine version to upgrade to"
|
||||
read NewAlpineVersion
|
||||
;;
|
||||
[Yy]* ) break;;
|
||||
* ) echo "Choose yes or no.";;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
#CT updates
|
||||
if $UpdateCT; then
|
||||
for CTID in $(pct list | tail -n+2 | awk '{print $1}'); do
|
||||
#Skip CT if in ExcludeList
|
||||
if [[ "${ExcludeList[*]}" =~ $CTID ]]; then echo "Notice: $CTID excluded"; continue; fi
|
||||
# Skip CT if not running
|
||||
if ! $(CT-State $CTID); then echo "Notice: $CTID not running"; continue; fi
|
||||
#DEBUG echo "Task for $CTID"
|
||||
CT-UpgradeRelease $CTID | tee "$LogDir"/"$CTID"_Release.log
|
||||
done
|
||||
fi
|
||||
|
||||
#VM Updates
|
||||
if $UpdateVM; then
|
||||
for VMID in $(qm list | tail -n+2 | awk '{print $1}'); do
|
||||
#Skip VM if in ExcludeList
|
||||
if [[ "${ExcludeList[*]}" =~ $VMID ]]; then echo "Notice: $VMID excluded"; continue; fi
|
||||
# Skip VM if not running
|
||||
if ! $(VM-State $VMID); then echo "Notice: $VMID not running"; continue; fi
|
||||
#DEBUG echo "Task for $VMID"
|
||||
VM-UpgradeRelease $VMID | tee "$LogDir"/"$VMID"_Release.log
|
||||
done
|
||||
fi
|
||||
Reference in New Issue
Block a user