blob: 3cb51bf508925da14421d31fe5e7aaac38970e88 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#!/usr/bin/env bash
# A script to upgrade a RHEL derivative (Fedora, CentOS, ...). If you have ansible or puppet:
# this is way more simple with an automation framework. This script works with the paradigm
# that you only have a bash available and you want to see what happens without being murdered
# by gazillions of output lines.
# This script avoids combining options, e.g. dnf -C -q instead of dnf -Cq, since
# dnf is perfectly capable of POSIX standards, but yum fails at combined parameters.
# So we'll leave it this way in case of conversion of this script to yum or extension
# to be capable of both. (tl;dr no combined options because yum sucks at POSIX standards)
ROK="\033[666D[ \033[32mOK\033[0m ]\033[u\033[K"
RWRN="\033[666D[\033[33mWARN\033[0m]\033[u\033[K"
RERR="\033[666D[\033[31mFAIL\033[0m]\033[u\033[K"
RINF="\033[666D[\033[37mINFO\033[0m]\033[u\033[K"
UPDAVAIL=1
SCMD="$(command -v snap 2>/dev/null)"
UCMD="$(command -v dnf 2>/dev/null)"
[ "$?" -ne 0 ]&&UCMD="$(command -v yum 2>/dev/null)"
[ -z "$UCMD" ]&&printf "Neither yum nor dnf found!\n" >&2&&exit 1
RETVAL=0
function radd {
[ -z "$1" ]&&return 1
printf "\033[666D\033[u\033[K \033[37m(%b)\033[0m" "$1"
}
function rbeg {
[ -z "$1" ]&&return 1
printf "[....] %b.\033[s.." "$1"
}
function rok {
case "$1" in
"") printf "%b\n" "$ROK";;
*)
printf "%b" "$ROK"
radd "$1"
printf "\n"
;;
esac
}
function rwrn {
case "$1" in
"") printf "%b\n" "$RWRN";;
*)
printf "%b" "$RWRN"
radd "$1"
printf "\n"
;;
esac
}
function rerr {
case "$1" in
"") printf "%b\n" "$RERR";;
*)
printf "%b" "$RERR"
radd "$1"
printf "\n"
;;
esac
}
function rinf {
case "$1" in
"") printf "%b\n" "$RINF";;
*)
printf "%b" "$RINF"
radd "$1"
printf "\n"
;;
esac
}
function supgrade {
printf "Listing updates...:\n"
sudo "${UCMD}" -C -q check-upgrade
case "$?" in
0|100) ;;
*) RETVAL=1;return 1;;
esac
rbeg "Upgrading system packages"
sudo "${UCMD}" -q -y upgrade
case "$?" in
0) rok;;
1)
rwrn "error occurred but was handled by dnf"
case "RETVAL" in
0) RETVAL=255;;
esac
;;
255)
rwrn "Upgrade done but updates remaining"
case "$RETVAL" in
0) RETVAL=255;;
esac
;;
*)
rerr
RETVAL=1;return 1
;;
esac
printf "Checking for outdated running services or necessity to reboot...:\n"
sudo "${UCMD}" needs-restarting
}
function snrefresh {
rbeg "Refreshing snapd snaps"
sudo "${SCMD}" refresh >/dev/null 2>&1
case "$?" in
0) rok;;
*) rerr;RETVAL=1;return 1;;
esac
}
rbeg "Updating dnf cache"
sudo "${UCMD}" -q makecache
case "$?" in
0) rok;;
100) rwrn;;
*) rerr;exit 1;;
esac
rbeg "Checking for upgrades"
sudo "${UCMD}" -C -q check-upgrade
case "$?" in
0)
rinf "No updates"
;;
100)
rok "Updates found"
UPDAVAIL=0
;;
esac
if [ "$UPDAVAIL" -eq 0 ];then
supgrade
fi
if [ ! -z "$SCMD" ];then
snrefresh
fi
|