Skip to content

Commit e6da5bf

Browse files
author
marci
committed
Aktualisiere den Text in frontmatter.json für Fragen und Feedback, passe den Pfad zum Vorschaubild in der Markdown-Datei an und deaktiviere die Anzeige der neuesten Beiträge im Navbar.
1 parent 66b92f8 commit e6da5bf

5 files changed

Lines changed: 386 additions & 3 deletions

File tree

content/posts/linux/scripting/automatische-update-rhel-bash-script.de.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ menu:
1717
keywords:
1818
- rhel-update
1919
draft: false
20-
preview: ../../../assets/images/posts/linux/bash-update-script-rhel.webp
20+
preview: ../../../../assets/images/posts/linux/bash-update-script-rhel.webp
2121
hero: /images/posts/linux/bash-update-script-rhel.webp
2222
---
2323
## Updates auf RHEL-basierenden Systemen automatisieren mit einem Bash-Script
Lines changed: 373 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,373 @@
1+
---
2+
title: Automatische Updates von RHEL-Systemen mit einem Bash-Script
3+
description: Automatisierte Updates auf einem RHEL-basierenden OS mit einem Bash-Script
4+
date: 2025-08-17T13:34:19.769Z
5+
tags:
6+
- bash
7+
- linux
8+
- rhel
9+
categories:
10+
- Linux
11+
- Tutorials
12+
menu:
13+
sidebar:
14+
name: Bash-Script für automatische Updates auf RHEL-Systemen
15+
identifier: rhel-update
16+
parent: linux-scripting
17+
keywords:
18+
- rhel-update
19+
draft: true
20+
preview: ../../../../assets/images/posts/linux/bash-update-script-rhel.webp
21+
hero: /images/posts/linux/bash-update-script-rhel.webp
22+
---
23+
## Updates auf RHEL-basierenden Systemen automatisieren mit einem Bash-Script
24+
25+
In diesem kleinen Tutorial möchte ich zeigen, wie ihr mit Hilfe eines Bash-Script, RHEL-basierende Server-Systeme automatisch aktualisieren lassen könnt.
26+
27+
## Warum ein Bash-Script nutzen
28+
29+
Ich denke jeder Administrator weiß die Vorzüge der Verwendung von Scripte zur Automatierung von immer wiederkehrenden Aufgaben zu schätzen und kann so seine produktive Arbeit effizienter gestalten.
30+
31+
Daher habe ich mir gedacht, dass ich euch in diesem Tutorial das Bash-Scripting ein wenig näher bringe und euch anhand eines Beispiels, dass Scripting in der Shell zeige.
32+
Als Beispiel schreibe ich ein Script mit dessen Hilfe, Updates von RHEL-basierenden Betriebssystemen, vollkommen automatisiert ablaufen.
33+
34+
## Erstellung des Bash-Scripts für automatische Updates
35+
36+
<!-- FM:Snippet:Start data:{"id":"Warning","fields":[]} -->
37+
{{< alert type="warning" >}}
38+
**Warnung**
39+
40+
Bitte Bash-Scripte immer erst auf **Test-Systeme** vorab Testen und dann auf Produktiv-Systemen ausrollen!!!
41+
{{< /alert >}}
42+
<!-- FM:Snippet:End -->
43+
44+
## Zum Aufbau von diesem Beispiel-Script
45+
Zunächst werde ich in diesem Beispiel-Script euch die **einzelnen Befehls-Abschnitte** des Bash-Scripts nacheinander deren Bedeutung und Funktionsweise erklären und weiter unten in diesem Artikel findet ihr dann das fertige Update-Script zur eurer freien Verfügung.
46+
<!-- FM:Snippet:Start data:{"id":"Info","fields":[]} -->
47+
{{< alert type="info" >}}
48+
In meinem GitHub-Repository findet ihr noch viele praktische Scripte für die Bash oder das Scripting mit Phyton.
49+
50+
[**--> Hier geht es zum Repository**](https://github.com/securebitsorg/community-templates)
51+
52+
{{< /alert >}}
53+
<!-- FM:Snippet:End -->
54+
55+
#### Was braucht ihr für die Erstellung eines Bash-Scripts?!
56+
Für das Erstellen eines Bash-Scripts braucht es eigentlich nur einen einfachen Text-Editor.
57+
Besser jedoch ist es, wenn ihr einen Editor nutzt, der auch das Syntax-Highlighting der Bash-Scripting beherrscht. So ist einfacher, die richtige Formatierung für das Script einzuhalten und sorgt auch für eine bessere Übersicht.
58+
59+
##### Hier eine kleine Auswahl an Editoren unter Linux:
60+
- KWrite
61+
- VSCode
62+
- nano
63+
- VIM
64+
- NEOvim
65+
- Kate
66+
67+
68+
### Erstellung der Bash-Script-Datei
69+
Bevor mit dem Erstellen des Bash-Scripts für unser Update-Script anfangen können, brauchen wir zunächst eine Script-Datei.
70+
Um diese zu Bash-Script-Datei zu erstellen, erstellt ihr eine neue Datei mit der Endung **`.sh`** mit dem **nano-Editor** oder dem Editor eurer Wahl.
71+
72+
**In diesem Beispiel erstellen wir das Script im Wurzelverzeichnis des `root-users`**
73+
74+
>
75+
> #### Installieren des **nano-Editor**
76+
>
77+
> Bei den meisten Distros ist der **nano-Editor** schon vorinstalliert. Sollte das nicht der Fall sein, könnt ihr einfach die Installation mit diesen Befehl nachholen.
78+
>
79+
>```sh
80+
># Installation des nano-Editor
81+
>
82+
>sudo dnf update
83+
>
84+
>sudo dnf install nano
85+
>```
86+
### Schritt 1 - Erstellung einer Bash-Script-Datei
87+
In diesem Beispiel nutze ich einfachshalber den `nano-editor` im Terminal, da dieser einfach zu Bedienen ist und auch für alle Distros (meines Wissens) verfügbar ist.
88+
89+
```sh
90+
# Solltet ihr als nicht root-user angemeldet sein, könnt ihr euch mit dem folgenden Befehl als root-user anmelden
91+
92+
sudo -s
93+
94+
# Erstellen der Script-Datei im root-Verzeichnis
95+
touch ~/simple_update_RHEL_script.sh
96+
97+
# Bearbeiten der Script-Datei
98+
nano ~/simple_update_RHEL_script.sh
99+
```
100+
Im nun offnen Editor-Fenster der Datei `simple_update_RHEL_script.sh`, gibt ihr in der ersten Zeile, das folgende ein:
101+
102+
`/bin/bash`
103+
104+
> Mit dieser ersten Zeile `/bin/bash` weisen wir aus, das es sich hier um ein Bash-Script handelt und so weiß das Betriebssystem, mit welchem Interpreter (Shell) unser Script ausgeführt werden soll.
105+
106+
### Schritt 2 - Bash-Script Kommentare und Anweisungen einfügen
107+
#### Warum Kommentare und Anweisungen erstellen?
108+
Generell sollte man sich von Anfang angewöhnen, die erstellten Bash-Scripte gut zu Dokumentieren.
109+
110+
Erstens hilft es einem Selbst, wenn man eine Vielzahl an Bash-Scripte in seinem Werkzeugkasten hat, um sich auch später noch daran erinnern zu können, welche Funktionalität mit dem Script bereitgestellt wird.
111+
112+
Zweitens ist natürlich von Vorteil, dass auch Andere mit dem Bash-Script etwas anfangen können, wenn ihr eure Scripte zum Beispiel intern oder auf GitHub etc. mit anderen Usern teilt.
113+
#### Einfügen von Kommentare oder Anweisungen
114+
Ich für meinen Teil schreibe am Anfang meiner Scripte immer erst die Versionsnummer (für den Versionsverlauf), eine Beschreibung wofür dieses Script gedacht ist und Anweisungen für die Nutzung des Scripts.
115+
116+
Den einzelnen auszuführenden Befehle im Bash-Script, füge ich auch noch eine kurze Beschriftung sowie Funktionsart hinzu, wenn ich diese mit Dritten teile.
117+
118+
**Im folgendem sieht das dann so aus:**
119+
120+
```bash
121+
# Version: 1.0
122+
123+
# Hinweis:
124+
# Dieses Script ist für RHEL-basierte Systeme gedacht.
125+
# Es aktualisiert das System und entfernt nicht mehr benötigte Pakete.
126+
# Es überprüft, ob ein Neustart des Systems erforderlich ist und startet es gegebenenfalls SOFORT neu.
127+
# Es ist wichtig, dass das Script als root ausgeführt wird.
128+
129+
# Anwendung:
130+
# sudo chmod +x simple_update_RHEL_script.sh
131+
# sudo ./simple_update_RHEL_script.sh
132+
133+
# Info:
134+
# This script is intended for RHEL-based systems.
135+
# It updates the system and removes unused packages.
136+
# It checks if a system restart is required and restarts the system if necessary.
137+
# It is important that the script is run as root.
138+
139+
# Using:
140+
# sudo chmod +x simple_update_RHEL_script.sh
141+
# sudo ./simple_update_RHEL_script.sh
142+
143+
144+
145+
# Automatisches Update-Script für RHEL-basierte Systeme / Automatic update script for RHEL-based systems
146+
```
147+
148+
### Schritt 3 - `echo` Ausgabe im Terminalfenster
149+
Um dem Anwender des Bash-Scripts eine Rückmeldung zu geben, was gerade bei der Ausführung des Scripts ausgeführt wird, gibt es den Befehl `echo` für den Ausdruck im Terminal.
150+
151+
In unserem Beispiel-Script nutzen wir den Befehl `echo` zum ersten Mal, um dem Anwender eine Nachricht im Terminal zu übergeben, welche darüber informiert, was nun durch dieses Script auf dem System durchgeführt wird.
152+
153+
```bash
154+
echo "================================================================="
155+
echo " Automatisches System-Update / Automatic system update"
156+
echo " (RHEL/Fedora/CentOS)"
157+
echo "================================================================="
158+
```
159+
### Schritt 4 - Bash-Anweisung `if, then, fi` (root-Berechtigung überprüfen)
160+
Unsere erste Anweisung die wir in unser Bash-Update-Script einfügen werden, ist die Überprüfung, ob wir die `root - Rechte` haben, um die Befehle auf dem System ausführen zu können.
161+
162+
```bash
163+
# Prüfen, ob root-Rechte vorhanden sind / Check if root privileges are present
164+
if [ "$EUID" -ne 0 ]; then
165+
echo "Bitte führen Sie dieses Script als root aus (sudo) / Please run this script as root (sudo)."
166+
exit 1
167+
fi
168+
```
169+
Hierzu bedienen wir uns der `if, then, fi` -Anweisung.
170+
Im Klarnamen heißt das, **'wenn (`if`)' "nicht gleich Benutzer-ID + 0 `[ "$EUID" -ne 0 ];` ist (root-User)", 'dann (`then`)' gebe eine Ausgabe im Terminal (`echo`) ab "Bitte führen Sie dieses Script als root aus (sudo) / Please run this script as root (sudo)." und beende das Script (`exit 1` (steht für "Script wurde mit Fehler oder besonderem Status beendet")). Der Befehl `fi` beendet die Anweisung.
171+
172+
### Schritt 5 - Bash-Anweisung (Überprüfung Paketmanager)
173+
In diesem Schritt werden wir eine weitere Systemprüfung durchführen, um zu Überprüfen, ob der Paketmanager `dnf` auf dem System vorhanden ist.
174+
175+
```bash
176+
# Prüfen, ob apt verfügbar ist / Check if apt is available
177+
if ! command -v dnf >/dev/null 2>&1; then
178+
echo "Kein 'dnf'-Paketmanager gefunden. Dieses Script funktioniert nur auf RHEL-basierten Systemen / No 'dnf' package manager found. This script only works on RHEL-based systems."
179+
exit 2
180+
fi
181+
```
182+
183+
184+
<!-- FM:Snippet:Start data:{"id":"Info","fields":[]} -->
185+
{{< alert type="info" >}}
186+
```bash
187+
if ! command -v dnf >/dev/null 2>&1;
188+
```
189+
Damit wird überprüft, ob das Kommando `dnf` im System verfügbar ist.
190+
{{< /alert >}}
191+
<!-- FM:Snippet:End -->
192+
193+
### Schritt 4 - Bash-Anweisung (RHEL-Paketquellen aktualisieren und Update durchführen)
194+
In diesem Schritt geben wir zunächst die Ausgabe (`echo`) in das Terminal, dass die Paketquellen aktualisiert werden.
195+
Dann wird der Befehl `dnf update -y` ausgeführt um die angekündigte Aktualisierung der Paketquellen durchzuführen und bei vorhandenen neueren Paketen das System zu aktualisieren.
196+
197+
```bash
198+
# Paketquellen aktualisieren / Update package sources
199+
echo "Aktualisiere Paketquellen / Ausführung Upgrade | Update package sources / "
200+
dnf update -y
201+
```
202+
203+
### Schritt 5 - Bash-Anweisung (unnötige dnf-Pakete entfernen)
204+
Als nächstes werden wir noch eine Anweisung einbauen, um unnötige / nicht mehr benötigte `dnf`-Pakete automatisch zu löschen.
205+
206+
```bash
207+
# Nicht mehr benötigte Pakete entfernen / Remove unused packages
208+
echo "Entferne nicht mehr benötigte Pakete / Remove unused packages"
209+
dnf autoremove -y
210+
```
211+
212+
### Schritt 6 - Bash-Anweisung (dnf-cache leeren)
213+
Zu guter Letzt werden wir noch eine letzte Anweisung für den Update-Prozess einfügen, um den Cache des Paketmanager zu leeren.
214+
215+
```bash
216+
# Paketdatenbank bereinigen / Clean up cached package data
217+
echo "Bereinige zwischengespeicherte Paketdaten / Clean up cached package data"
218+
dnf clean all
219+
```
220+
221+
### Schritt 7 - Bash-Anweisung (echo-Ausgabe Update-Prozess abgeschlossen)
222+
Da der Update-Prozess nach den letzten Anweisungen fertiggestellt ist, geben wir noch eine Mitteilung an den User im Terminal, dass der Update-Prozess zu Ende ist.
223+
224+
```bash
225+
echo "================================================================="
226+
echo " System-Update abgeschlossen / System update completed"
227+
echo "================================================================="
228+
```
229+
230+
### Schritt 10 - Bash-Anweisung (Erforderliches Reboot überprüfen)
231+
Da zum Beispiel einige Aktualisierungen (z.B. Änderung am Kernel) einen Neustart des Betriebssystem benötigen, werden wir noch eine letzte Anweisung hinzufügen, um dieses zu überprüfen und gegebenfalls einen Neustart auslösen.
232+
233+
```bash
234+
# Überprüfen ob ein Neustart des Systems erforderlich ist / Check if a system restart is required
235+
if [ -f /var/run/reboot-required ]; then
236+
echo "Ein Neustart des Systems ist erforderlich. Das System wird jetzt neu gestartet / A system restart is required. The system will now restart."
237+
reboot
238+
fi
239+
```
240+
241+
#### Bash-Update-Script abspeichern
242+
> Nach einer letzten Überprüfung von unserem Script müssen wir dieses natürlich nach abspeichern!
243+
244+
## Fertiges RHEL-Update Bash-Script
245+
Hier nun das fertige Bash-Script um automatisiert Update-Routinen auf RHEL-Systemen durchlaufen zu lassen.
246+
247+
Diese könnt ihr dann wie cronjob automatisiert auf den Linux-Systemen laufen lassen.
248+
249+
<!-- FM:Snippet:Start data:{"id":"Success","fields":[]} -->
250+
{{< alert type="success" >}}
251+
Gerade wenn ihr eine Vielzahl an Linux-Server zum Beispiel auf einen Proxmox VE-Server laufen habt, erleichtern euch solche Bash-Scripte enorm die Arbeit.
252+
{{< /alert >}}
253+
254+
<!-- FM:Snippet:End -->## Schritt 11 - Bash-Update-Script ausführbar machen
255+
Damit wir das Bash-Update-Script auch nutzen / ausführen können, muss das Script noch mit dem entsprechenden Rechten versehen werden.
256+
257+
```sh
258+
sudo chmod +x simple_update_RHEL_script.sh
259+
```
260+
261+
262+
```bash
263+
#!/bin/bash
264+
265+
# Version: 1.0
266+
267+
# Hinweis:
268+
# Dieses Script ist für RHEL-basierte Systeme gedacht.
269+
# Es aktualisiert das System und entfernt nicht mehr benötigte Pakete.
270+
# Es überprüft, ob ein Neustart des Systems erforderlich ist und startet es gegebenenfalls SOFORT neu.
271+
# Es ist wichtig, dass das Script als root ausgeführt wird.
272+
273+
# Anwendung:
274+
# sudo chmod +x simple_update_RHEL_script.sh
275+
# sudo ./simple_update_RHEL_script.sh
276+
277+
# Info:
278+
# This script is intended for RHEL-based systems.
279+
# It updates the system and removes unused packages.
280+
# It checks if a system restart is required and restarts the system if necessary.
281+
# It is important that the script is run as root.
282+
283+
# Using:
284+
# sudo chmod +x simple_update_RHEL_script.sh
285+
# sudo ./simple_update_RHEL_script.sh
286+
287+
288+
289+
# Automatisches Update-Script für RHEL-basierte Systeme / Automatic update script for RHEL-based systems
290+
291+
echo "================================================================="
292+
echo " Automatisches System-Update / Automatic system update"
293+
echo " (RHEL/Fedora/CentOS)"
294+
echo "================================================================="
295+
296+
# Prüfen, ob root-Rechte vorhanden sind / Check if root privileges are present
297+
if [ "$EUID" -ne 0 ]; then
298+
echo "Bitte führen Sie dieses Script als root aus (sudo) / Please run this script as root (sudo)."
299+
exit 1
300+
fi
301+
302+
# Prüfen, ob apt verfügbar ist / Check if apt is available
303+
if ! command -v dnf >/dev/null 2>&1; then
304+
echo "Kein 'dnf'-Paketmanager gefunden. Dieses Script funktioniert nur auf RHEL-basierten Systemen / No 'dnf' package manager found. This script only works on RHEL-based systems."
305+
exit 2
306+
fi
307+
308+
# Paketquellen aktualisieren / Update package sources
309+
echo "Aktualisiere Paketquellen und Installation von Updates/ Update package sources and update packges"
310+
dnf update -y
311+
312+
# Nicht mehr benötigte Pakete entfernen / Remove unused packages
313+
echo "Entferne nicht mehr benötigte Pakete / Remove unused packages"
314+
dnf autoremove -y
315+
316+
# Paketdatenbank bereinigen / Clean up cached package data
317+
echo "Bereinige zwischengespeicherte Paketdaten / Clean up cached package data"
318+
dnf clean all
319+
320+
echo "================================================================="
321+
echo " System-Update abgeschlossen / System update completed"
322+
echo "================================================================="
323+
324+
# Überprüfen ob ein Neustart des Systems erforderlich ist / Check if a system restart is required
325+
if [ -f /var/run/reboot-required ]; then
326+
echo "Ein Neustart des Systems ist erforderlich. Das System wird jetzt neu gestartet / A system restart is required. The system will now restart."
327+
reboot
328+
fi
329+
330+
# Ende des Scripts / End of script
331+
332+
```
333+
334+
## Schritt 11 - Bash-Update-Script ausführbar machen
335+
Damit wir das Bash-Update-Script auch nutzen / ausführen können, muss das Script noch mit dem entsprechenden Rechten versehen werden.
336+
337+
**Script-Rechte anpassen**
338+
339+
```sh
340+
# Sript-Rechte anpassen
341+
342+
sudo chmod +x simple_update_RHEL_script.sh
343+
344+
```
345+
346+
**Bash-Update-Script ausführen**
347+
348+
```sh
349+
# Möglichkeit 1: Ausführen des Bash-Scripts
350+
351+
sudo sh simple_update_RHEL_script.sh
352+
353+
# Möglichkeit 2: Ausführung des Scripts
354+
355+
sudo ./simple_update_RHEL_script.sh
356+
357+
```
358+
359+
## Fazit zum Bash-Scripting
360+
Wer effizient mehrere Linux-Server zu administrieren hat, kommt an Bash- / oder Python-Scripting meiner Meinung nicht vorbei.
361+
362+
Natürlich gibt es zum Beispiel auch mächtige Tools wie [**Ansible**](https://docs.ansible.com/ansible/latest/index.html) für die Automatisierung von Deployment, Wartung, etc., aber ist das Lernen einer Script-Sprache in meinen Augen der beste Anfang.
363+
364+
<!-- FM:Snippet:Start data:{"id":"Help deutsch","fields":[]} -->
365+
> ## Fragen und Antworten
366+
>
367+
> Wenn Sie Fragen oder Feedback zu diesem Blog oder YouTube-Kanal haben, nutzen Sie bitte meine Hilfeseite. Dort finden Sie Fragen und Antworten zu den verschiedenen Beiträgen. Sie können dort auch gerne Ihre eigene Frage stellen.
368+
>
369+
> [**Zur Hilfeseite**](https://help.secure-bits.org)
370+
<!-- FM:Snippet:End -->
371+
372+
373+

data/de/sections/recent-posts.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# section information
2+
section:
3+
name: Neueste Artikel # Title of section (default: "")
4+
id: recent-posts # url id/slug of section *Required*
5+
enable: true # Boolean to determine if this section is enabled (default: false)
6+
weight: 11 # Order to display section in (default: alphabetical followed by weight)
7+
showOnNavbar: false # Boolean to determine if a link should be shown for this section on the navbar
8+
hideTitle: false # Can optionally hide the title in sections (default: false)
9+
numShow: 3 # Can optionally increase the number of posts to display (default: 3)
10+
showMoreButton: true #Can optionally show 'More Posts' button (default: false)

0 commit comments

Comments
 (0)