Skip to content

Instantly share code, notes, and snippets.

@Zeklandia
Last active December 25, 2015 17:59
Show Gist options
  • Save Zeklandia/7017242 to your computer and use it in GitHub Desktop.
Save Zeklandia/7017242 to your computer and use it in GitHub Desktop.
Simple script to take care of routine upgrades.
#!/bin/bash
init () {
set_vars
get_root
linker
}
get_root () {
echo -en "Getting Root..."
if [ $(id -u) != "0" ];
then
echo -en "\r\e[K"
getopts "hifcrs" RX_args
sudo "$0" "$RX_args"
unset RX_args
exit 1
echo -en "Getting Root..."
if [ $UID != 0 ];
then
echo -e " $fail"
exit -1
fi
else
echo -e " $success"
fi
echo -en "Checking Root..."
echo -e " $success"
}
set_vars () {
root_log="/var/log/script-upgrade.root"
update_log="/var/log/script-upgrade.update"
upgrade_log="/var/log/script-upgrade.dist-upgrade"
fixdep_log="/var/log/script-upgrade.fix-dependencies"
autoremove_log="/var/log/script-upgrade.autoremove"
success="\e[1;30m[\e[0;32mDone\e[1;30m]\e[0m"
fail="\e[1;30m[\e[0;31mFail\e[1;30m]\e[0m"
}
linker () {
if [ ! -f "/usr/bin/script-upgrade" ];
then
ln -s $BASH_SOURCE "/usr/bin/script-upgrade"
fi
}
check_updates () {
echo -en "Downloading Package Lists..."
apt-get update > $update_log 2>&1
local update_log_errors=`cat $update_log | egrep 'err|error|fail|unable|problem'`
if [ "$update_log_errors" != "" ];
then
echo -e " $fail"
exit -1
else
echo -e " $success"
fi
}
install_upgrades () {
echo -en "Installing Upgrades..."
apt-get -fy dist-upgrade > $upgrade_log 2>&1
local upgrade_log_errors=`cat $upgrade_log | egrep 'err|error|fail|unable|problem'`
if [ "$upgrade_log_errors" != "" ];
then
echo -e " $fail"
exit -1
else
echo -e " $success"
fi
}
fix_dependencies () {
echo -en "Fixing Dependencies..."
apt-get -f install > $fixdep_log 2>&1
local fixdep_log_errors=`cat $fixdep_log | egrep 'err|error|fail|unable|problem'`
if [ "$fixdep_log_errors" != "" ];
then
echo -e " $fail"
exit -1
else
echo -e " $success"
fi
}
autoremove_packages () {
echo -en "Autoremoving Unnecessary Packages..."
apt-get autoremove > $autoremove_log 2>&1
local autoremove_log_errors=`cat $autoremove_log | egrep 'err|error|fail|unable|problem'`
if [ "$autoremove_log_errors" != "" ];
then
echo -e " $fail"
exit -1
else
echo -e " $success"
fi
}
clean_cache () {
echo -en "Cleaning Cache..."
apt-get clean
echo -e " $success"
}
print_help () {
echo -e "\n\e[1mUsage:\e[0;0m"
echo -e "-h, --help Print this text"
echo -e "-i Install upgradeable packages"
echo -e "-f Fix dependencies"
echo -e "-c Autoremove unnecessary packages \e[1;30m[\e[0;31mDANGER\e[1;30m]\e[0m"
echo -e "-r Reboot upon completion"
}
unset_vars () {
unset root_log
unset root_log_errors
unset update_log
unset update_log_errors
unset upgrade_log
unset upgrade_log_errors
unset fixdep_log
unset fixdep_log_errors
unset autoremove_log
unset autoremove_log_errors
unset success
unset fail
unset args
}
finish () {
clean_cache
unset_vars
}
init
check_updates
while getopts "hifcrs" args;
do
case "$args" in
h|--help)
print_help
;;
i)
install_upgrades
;;
f)
fix_dependencies
;;
c)
autoremove_packages
;;
r)
reboot
;;
s)
poweroff
;;
*)
break
;;
esac
done
finish
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment