Skip to content

Instantly share code, notes, and snippets.

@dave-maldonado
Last active August 29, 2015 14:04
Show Gist options
  • Save dave-maldonado/4f09d998060b9c0f1dd7 to your computer and use it in GitHub Desktop.
Save dave-maldonado/4f09d998060b9c0f1dd7 to your computer and use it in GitHub Desktop.
An upgrade script for the FreePBX distro
#!/bin/bash
# bash script to upgrade FreePBX distro
# Dave Maldonado @ TeleVoIPs
FINAL_VER="5.211.65-15" # change and add case to main logic to add new version
DOWNLOAD_URL="http://upgrades.freepbxdistro.org/stable"
DONE="false"
# PROCEDURE: find current version of FreePBX distro
find_version () {
if [ -f "/etc/schmooze/pbx-version" ]; then
CURRENT_VER=$(cat /etc/schmooze/pbx-version)
else
CURRENT_VER=$(cat /etc/asterisk/freepbxdistro-version)
fi
}
# PROCEDURE: upgrade to next version
# PARAMETERS: $1 = series number, i.e. '5.211.65'
# and $2 = specific upgrade name, i.e. '5.211.65-15'
upgrade_version () {
echo "Downloading $2"
wget $DOWNLOAD_URL/$1/upgrade-$2.sh
echo "Setting permissions for the script."
chmod +x upgrade-$2.sh
echo "Upgrading to $2..."
./upgrade-$2.sh
echo "Upgrade complete!"
}
# exit script if already on latest version
find_version
if [ "$CURRENT_VER" = "$FINAL_VER" ]; then
echo "You are on $CURRENT_VER, the latest version in this script."
exit 0
fi
echo "You are currently on $CURRENT_VER."
echo "Get a cup of coffee, this might take a while..."
sleep 5
# create temp directory if needed
if [ ! -d /tmp/freepbx-updates ]; then
mkdir /tmp/freepbx-updates
echo "Creating /tmp/freepbx-updates"
fi
# switch to temp directory
cd /tmp/freepbx-updates
echo "Switching to /tmp/freepbx-updates"
sleep 5
# main logic: apply upgrade_version for each update until at FINAL_VER
while [ "$DONE" != "true" ]
do
case $CURRENT_VER in
1.1100.211.63-1 )
upgrade_version 1.1100.211.63 1.1100.211.63-2
;;
1.1100.211.63-2 )
upgrade_version 1.1100.211.63 1.1100.211.63-3
;;
1.1100.211.63-3 )
upgrade_version 1.1100.211.63 1.1100.211.63-4
;;
1.1100.211.63-4 )
upgrade_version 1.1100.211.63 1.1100.211.63-5
;;
1.1100.211.63-5 )
upgrade_version 1.1100.211.63 3.211.63-1
;;
2.210.62-1 )
upgrade_version 2.210.62 2.210.62-2
;;
2.210.62-2 )
upgrade_version 2.210.62 2.210.62-3
;;
2.210.62-3 )
upgrade_version 2.210.62 2.210.62-4
;;
2.210.62-4 )
upgrade_version 2.210.62 2.210.62-5
;;
2.210.62-5 )
upgrade_version 2.210.62 2.210.62-6
;;
2.210.62-6 )
upgrade_version 2.210.62 2.210.62-7
;;
2.210.62-7 )
upgrade_version 2.210.62 2.210.62-100
;;
3.211.63-1 )
upgrade_version 3.211.63 3.211.63-2
;;
3.211.63-2 )
upgrade_version 3.211.63 3.211.63-3
;;
3.211.63-3 )
upgrade_version 3.211.63 3.211.63-4
;;
3.211.63-4 )
upgrade_version 3.211.63 3.211.63-5
;;
3.211.63-5 )
upgrade_version 3.211.63 3.211.63-6
;;
3.211.63-6 )
upgrade_version 3.211.63 3.211.63-7
;;
3.211.63-7 )
upgrade_version 3.211.63 3.211.63-8
;;
3.211.63-8 )
upgrade_version 3.211.63 3.211.63-9
;;
3.211.63-9 )
upgrade_version 3.211.63 3.211.63-10
;;
3.211.63-10 )
upgrade_version 4.211.64 3.211.63-to-4.211.64-1
;;
4.211.64-1 )
upgrade_version 4.211.64 4.211.64-2
;;
4.211.64-2 )
upgrade_version 4.211.64 4.211.64-3
;;
4.211.64-3 )
upgrade_version 4.211.64 4.211.64-4
;;
4.211.64-4 )
upgrade_version 4.211.64 4.211.64-5
;;
4.211.64-5 )
upgrade_version 4.211.64 4.211.64-6
;;
4.211.64-6 )
upgrade_version 4.211.64 4.211.64-7
;;
4.211.64-7 )
upgrade_version 4.211.64 4.211.64-8
;;
4.211.64-8 )
upgrade_version 4.211.64 4.211.64-9
;;
4.211.64-9 )
upgrade_version 4.211.64 4.211.64-10
;;
4.211.64-10 )
upgrade_version 5.211.65 4.211.64-to-5.211.65-1
;;
5.211.65-1 )
upgrade_version 5.211.65 5.211.65-2
;;
5.211.65-2 )
upgrade_version 5.211.65 5.211.65-3
;;
5.211.65-3 )
upgrade_version 5.211.65 5.211.65-4
;;
5.211.65-4 )
upgrade_version 5.211.65 5.211.65-5
;;
5.211.65-5 )
upgrade_version 5.211.65 5.211.65-6
;;
5.211.65-6 )
upgrade_version 5.211.65 5.211.65-7
;;
5.211.65-7 )
upgrade_version 5.211.65 5.211.65-8
;;
5.211.65-8 )
upgrade_version 5.211.65 5.211.65-9
;;
5.211.65-9 )
upgrade_version 5.211.65 5.211.65-10
;;
5.211.65-10 )
upgrade_version 5.211.65 5.211.65-11
;;
5.211.65-11 )
upgrade_version 5.211.65 5.211.65-12
;;
5.211.65-12 )
upgrade_version 5.211.65 5.211.65-13
;;
5.211.65-13 )
upgrade_version 5.211.65 5.211.65-14
;;
5.211.65-14 )
upgrade_version 5.211.65 5.211.65-15
;;
5.211.65-15 )
upgrade_version 5.211.65 5.211.65-16
;;
5.211.65-16 )
upgrade_version 5.211.65 5.211.65-17
;;
5.211.65-17 )
upgrade_version 5.211.65 5.211.65-18
;;
5.211.65-18 )
upgrade_version 5.211.65 5.211.65-19
;;
5.211.65-19 )
upgrade_version 5.211.65 5.211.65-20
;;
5.211.65-20 )
DONE="true"
;;
* )
echo "Uh-oh, something went wrong..."
echo "Possible issues include:"
echo "1. upgrading a *really* early version of FreePBX"
echo "2. upgrading a new version of FreePBX not in this script"
echo "3. programmer error (yeah it happens!)"
exit 0
;;
esac
find_version
done
# cleanup
rm -rf /tmp/freepbx-updates
echo "Deleting /tmp/freepbx-updates."
sleep 3
echo "You are on version $CURRENT_VER of FreePBX, Great Job!"
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment