-
Notifications
You must be signed in to change notification settings - Fork 48
/
create_vars.sh
executable file
·104 lines (89 loc) · 3.03 KB
/
create_vars.sh
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
#!/bin/bash
##############################################################################
source /absolute/path/to/variables.txt
# Functions ##################################################################
get_advisories() {
yum updateinfo list all 2>/dev/null | awk '/RHSA-[0-9]{4}:[0-9]{4}/ {print $(NF-2)}' | sort -u
}
get_remote_advisories() {
rm "${REMOTE_ADVISORIES}" 2>/dev/null
for HOST in "${REMOTE_HOSTS}"
do
ssh -i "${SSH_KEY}" ${REMOTE_USER}@${HOST} "$(typeset -f get_advisories); get_advisories" >>"${REMOTE_ADVISORIES}" 2>/dev/null
done
}
create_patch_set() {
if [ ! -f "${BASELINE}" ]
then
get_advisories >"${BASELINE}" 2>/dev/null
if [ -n "$REMOTE_HOSTS" ]
then
get_remote_advisories
mv "${BASELINE}" "${TMPFILE}"
cat "${TMPFILE}" "${REMOTE_ADVISORIES}" | sort -u >"${BASELINE}" 2>/dev/null
rm "${REMOTE_ADVISORIES}" "${TMPFILE}"
fi
cp "${BASELINE}" "${CURRENT_PATCH_SET}" 2>/dev/null
else
if [ -f "${ADVISORIES}" ] && [ -s "${ADVISORIES}" ]
then
mv "${ADVISORIES}" "${BASELINE}"
fi
get_advisories >"${ADVISORIES}"
if [ -n "$REMOTE_HOSTS" ]
then
get_remote_advisories
mv "${ADVISORIES}" "${TMPFILE}"
cat "${TMPFILE}" "${REMOTE_ADVISORIES}" | sort -u >"${ADVISORIES}" 2>/dev/null
rm "${REMOTE_ADVISORIES}" "${TMPFILE}"
fi
comm -13 "${BASELINE}" "${ADVISORIES}" >"${CURRENT_PATCH_SET}"
fi
}
create_vars() {
if [ -f "${VARS}" ]
then
mv "${VARS}" "${VARS}.bak_`date +%Y-%m-%d`"
fi
ADVISORY_LIST=""
while read NAME
do
if [[ -z $ADVISORY_LIST ]]
then
ADVISORY_LIST="${NAME}"
else
ADVISORY_LIST="${ADVISORY_LIST},${NAME}"
fi
done < "${CURRENT_PATCH_SET}"
cat >"${VARS}" <<EOF
---
Set_`date +%Y_%m`: ${ADVISORY_LIST}
###################################################
rhsa_to_install: "{{ Set_`date +%Y_%m` }}"
EOF
}
create_mail() {
cat >"${MAIL_TEXT}" <<EOF
Hallo,
zu den unten genannten Stichtagen erfolgt die zentral gesteuerte Installation der Red Hat Advisories.
Es gelten folgende Stichtage fuer die Installation:
* ${DATE1} Installation Phase 1
* ${DATE2} Installation Phase 2
* ${DATE3} Installation Phase 3
* ${DATE4} Installation Phase 4
Die von den Advisories betroffenen Pakete werden nur dann aktualisiert, falls die Advisories nicht bereits vor dem jeweiligen Stichtag durch den Systembetreiber eingespielt wurden. Der folgende Befehl kann direkt per Copy & Paste zur Installation genutzt werden.
~~~
yum -y update-minimal --advisory ${ADVISORY_LIST}
~~~
Informationen zu den genannten Advisories findet man unter der URL: https://access.redhat.com/errata/#/
Sollte die Installation der genannten Advisories erforderlich sein, werden die betroffenen Systeme nach der Installation automatisch neugestartet.
EOF
}
send_mail() {
/usr/bin/mailx -s 'Ankündigung der Installation von Red Hat Advisories' "${MAIL_RCP}" <"${MAIL_TEXT}"
}
# Main #######################################################################
create_patch_set
create_vars
create_mail
send_mail