Last active
December 25, 2015 17:59
-
-
Save Zeklandia/7017242 to your computer and use it in GitHub Desktop.
Simple script to take care of routine upgrades.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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