-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpatch.sh
134 lines (115 loc) · 5 KB
/
patch.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
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
#!/bin/bash
#DC-Installer.sh #Bootstrap to GIT REPO
TEXTRESET=$(tput sgr0)
RED=$(tput setaf 1)
YELLOW=$(tput setaf 3)
GREEN=$(tput setaf 2)
USER=$(whoami)
MAJOROS=$(cat /etc/redhat-release | grep -Eo "[0-9]" | sed '$d')
#Checking for user permissions
if [ "$USER" = "root" ]; then
echo " "
else
echo ${RED}"This program must be run as root ${TEXTRESET}"
echo "Exiting"
fi
#Checking for version Information
if [ "$MAJOROS" = "9" ]; then
echo " "
else
echo ${RED}"Sorry, but this installer only works on Rocky 9.X ${TEXTRESET}"
echo "Please upgrade to ${GREEN}Rocky 9.x${TEXTRESET}"
echo "Exiting the installer..."
exit
fi
cat <<EOF
${GREEN}**************************
Please wait while we gather some files
**************************${TEXTRESET}
${YELLOW}Installing wget and git${TEXTRESET}
EOF
sleep 1
dnf -y install wget git dialog
cat <<EOF
${YELLOW}*****************************
Retrieving Files from GitHub
*****************************${TEXTRESET}
EOF
sleep 1
mkdir -p /root/RADSPatch
git clone https://github.com/fumatchu/RADS.git /root/RADSPatch
clear
cat << EOF
${GREEN}Patch update${TEXTRESET}
This patch will do the following:
Correct an issue when upgrading from 9.X to the latest version for the Samba src. rpm
Correct an issue with mis-reporting samba sync between upstream repository and local install
Updated server-manager to check the sync logs before bringing up the main menu in dialog.
${GREEN}The Patch has the following process:${TEXTRESET}
Check in with dnf first. If there are updates, download them and install them ${GREEN}(a reboot is not necessary)${TEXTRESET}
If there are no updates, the installer will continue to patch the system.
It will replace samaba-dnf-pkg-update, dnf-smb-mon, and server-manager
${YELLOW}YOU MUST MAKE SURE YOU HAVE INTERNET CONNECTIVITY${TEXTRESET}
(Assuming you are reading this, you have changed your dns entry on this server to something other than the Samba local).
If for some odd reason you still have internet connectivity you should do the following:
Make sure you have set your ${YELLOW}DNS entry on this server to something else (8.8.8.8, 208.67.222.222)${TEXTRESET}
You can do this with ${YELLOW}nmtui${TEXTRESET}
Run the command ${YELLOW}systemctl restart NetworkManager${TEXTRESET}
Run ${YELLOW}nmcli${TEXTRESET} to validate that the DNS entry is updated to the ${YELLOW}external DNS.${TEXTRESET}
After the patches are applied, the patch itself will ask you if you want to update samba using mock (in most cases, you will want to do this- This upgrades Samba to latest version)
The patch will then compile samba to the latest version and validate the install.
It will also change the External DNS entry back to the appropriate IP on your system.
After that, yes, you should ${RED}reboot${TEXTRESET}
EOF
# Prompt the user
read -p "Do you want to proceed with patching? (y/n): " choice
# Convert input to lowercase
choice=$(echo "$choice" | tr '[:upper:]' '[:lower:]')
# Check the user's choice
if [[ "$choice" == "y" || "$choice" == "yes" ]]; then
echo "Continuing with the script..."
# Add your script logic here
echo ${GREEN}"Proceeding..."${TEXTRESET}
else
echo ${RED}"Exiting the script."${TEXTRESET}
exit 0
fi
#Check that Pacakges are up to date on the server.
# Run dnf check-update and capture the output, ignoring the metadata expiration line
UPDATE_OUTPUT=$(dnf check-update | grep -v '^Last metadata expiration check:')
# Check if there are any lines in the output indicating available updates
if echo "$UPDATE_OUTPUT" | grep -q '^[[:alnum:]]'; then
echo ${YELLOW}"There are new packages available for update."${TEXTRESET}
echo "Updating Server"
sleep 5
dnf -y update
echo ${GREEN}"Restarting NetworkManager"${TEXTRESET}
systemctl restart NetworkManager
sleep 5
echo "The OS update is complete, but the patch has ${RED}NOT been installed"${TEXTRESET}
echo " "
echo ${YELLOW}"Make sure your server can resolve via external DNS first.${TEXTRESET} ${RED}It should not be pointed to your AD DNS."${TEXTRESET}
echo "This can be accomplished using ${YELLOW}nmtui${TEXTRESET}, editing the ${YELLOW}dns server${TEXTRESET}, then running ${YELLOW}systemctl restart NetworkManager"${TEXTRESET}
echo "After that is complete, run the comman nmcli to validate your DNS is pointed externally."
echo "Restart the patch process with this link here:"
echo ${YELLOW}"dnf -y install wget && cd /root && bash <(wget -qO- https://raw.githubusercontent.com/fumatchu/RADS/main/patch.sh)"${TEXTRESET}
read -p "Press Enter"
exit
else
echo ${GREEN}"No new packages available."${TEXTRESET}
echo "Proceeding..."
sleep 2
fi
items=(1 "Patch samba-dnf-pkg-update"
2 "Exit Patch Management"
)
while choice=$(dialog --title "$TITLE" \
--backtitle "Patch Update" \
--menu "Please select the install type" 15 65 3 "${items[@]}" \
2>&1 >/dev/tty); do
case $choice in
1) clear && cd /root && chmod 700 /root/RADSPatch/patches/samba-dnf-update-patch.sh && /root/RADSPatch/patches/samba-dnf-update-patch.sh;;
2) exit ;;
esac
done
clear # clear after user pressed Cancel