You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/posts/linux/automatische-update-debian-bash-script.de.md
+198-3Lines changed: 198 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,8 +4,8 @@ description: Automatisierte Updates auf einem debian-basierenden OS mit einem Ba
4
4
date: 2025-08-15T08:57:42.002Z
5
5
tags:
6
6
- bash
7
-
- linux
8
7
- debian
8
+
- linux
9
9
categories:
10
10
- Linux
11
11
- Tutorials
@@ -81,7 +81,7 @@ Um diese zu Bash-Script-Datei zu erstellen, erstellt ihr eine neue Datei mit der
81
81
>
82
82
>sudo apt install nano
83
83
>```
84
-
84
+
### Schritt 1 - Erstellung einer Bash-Script-Datei
85
85
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.
86
86
87
87
```sh
@@ -101,17 +101,182 @@ Im nun offnen Editor-Fenster der Datei `simple_update_debian_script.sh`, gibt ih
101
101
102
102
> 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.
103
103
104
-
### Bash-Script-Beschreibung einfügen
104
+
### Schritt 2 - Bash-Script Kommentare und Anweisungen einfügen
105
+
#### Warum Kommentare und Anweisungen erstellen?
106
+
Generell sollte man sich von Anfang angewöhnen, die erstellten Bash-Scripte gut zu Dokumentieren.
107
+
108
+
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.
109
+
110
+
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.
111
+
#### Einfügen von Kommentare oder Anweisungen
112
+
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.
105
113
114
+
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.
106
115
116
+
**Im folgendem sieht das dann so aus:**
117
+
118
+
```bash
119
+
# Version: 1.0
120
+
121
+
# Hinweis:
122
+
# Dieses Script ist für Debian-basierte Systeme gedacht.
123
+
# Es aktualisiert das System und entfernt nicht mehr benötigte Pakete.
124
+
# Es überprüft, ob ein Neustart des Systems erforderlich ist und startet es gegebenenfalls SOFORT neu.
125
+
# Es ist wichtig, dass das Script als root ausgeführt wird.
107
126
127
+
# Anwendung:
128
+
# sudo chmod +x simple_update_debian_script.sh
129
+
# sudo ./simple_update_debian_script.sh
108
130
131
+
# Info:
132
+
# This script is intended for Debian-based systems.
133
+
# It updates the system and removes unused packages.
134
+
# It checks if a system restart is required and restarts the system if necessary.
135
+
# It is important that the script is run as root.
136
+
137
+
# Using:
138
+
# sudo chmod +x simple_update_debian_script.sh
139
+
# sudo ./simple_update_debian_script.sh
140
+
141
+
142
+
143
+
# Automatisches Update-Script für Debian-basierte Systeme / Automatic update script for Debian-based systems
144
+
```
145
+
146
+
### Schritt 3 - `echo` Ausgabe im Terminalfenster
147
+
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.
148
+
149
+
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.
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.
159
+
160
+
```bash
161
+
# Prüfen, ob root-Rechte vorhanden sind / Check if root privileges are present
162
+
if [ "$EUID"-ne 0 ];then
163
+
echo"Bitte führen Sie dieses Script als root aus (sudo) / Please run this script as root (sudo)."
164
+
exit 1
165
+
fi
166
+
```
167
+
Hierzu bedienen wir uns der `if, then, fi` -Anweisung.
168
+
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.
In diesem Schritt werden wir eine weitere Systemprüfung durchführen, um zu Überprüfen, ob der Paketmanager `apt` auf dem System vorhanden ist.
172
+
173
+
```bash
174
+
# Prüfen, ob apt verfügbar ist / Check if apt is available
175
+
if!command -v apt >/dev/null 2>&1;then
176
+
echo"Kein 'apt'-Paketmanager gefunden. Dieses Script funktioniert nur auf Debian-basierten Systemen / No 'apt' package manager found. This script only works on Debian-based systems."
Nun wieder die `echo`-Anweisung, um die folgende Ausgabe im Terminal anzuzeigen: "Installiere verfügbare Updates / Install available updates" und gefolgt von dem Terminal-Befehl `apt upgrade -y`, um das Debian-System zu aktualisieren.
202
+
203
+
```bash
204
+
# Upgrades installieren / Install available updates
205
+
echo"Installiere verfügbare Updates / Install available updates"
Um auch Abhängigkeiten bei dem Upgrade-Prozess aufzulösen, zum Beispiel Sprung auf eine neue Version, führen auch den folgenden Terminal-Befehl in unserem Bash-Update-Script aus.
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.
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.
245
+
246
+
```bash
247
+
# Überprüfen ob ein Neustart des Systems erforderlich ist / Check if a system restart is required
248
+
if [ -f /var/run/reboot-required ];then
249
+
echo"Ein Neustart des Systems ist erforderlich. Das System wird jetzt neu gestartet / A system restart is required. The system will now restart."
250
+
reboot
251
+
fi
252
+
```
253
+
254
+
#### Bash-Update-Script abspeichern
255
+
> Nach einer letzten Überprüfung von unserem Script müssen wir dieses natürlich nach abspeichern!
109
256
110
257
## Fertiges Debian-Update Bash-Script
258
+
Hier nun das fertige Bash-Script um automatisiert Update-Routinen auf Debian-Systemen durchlaufen zu lassen.
259
+
260
+
Diese könnt ihr dann wie cronjob automatisiert auf den Linux-Systemen laufen lassen.
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.
Damit wir das Bash-Update-Script auch nutzen / ausführen können, muss das Script noch mit dem entsprechenden Rechten versehen werden.
358
+
359
+
**Script-Rechte anpassen**
360
+
361
+
```sh
362
+
# Sript-Rechte anpassen
363
+
364
+
sudo chmod +x simple_update_debian_script.sh
365
+
366
+
```
367
+
368
+
**Bash-Update-Script ausführen**
369
+
370
+
```sh
371
+
# Möglichkeit 1: Ausführen des Bash-Scripts
372
+
373
+
sh simple_update_debian_script.sh
374
+
375
+
# Möglichkeit 2: Ausführung des Scripts
376
+
377
+
./simple_update_debian_script.sh
378
+
379
+
```
380
+
381
+
## Fazit zum Bash-Scripting
382
+
Wer effizient mehrere Linux-Server zu administrieren hat, kommt an Bash- / oder Python-Scripting meiner Meinung nicht vorbei.
383
+
384
+
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.
0 commit comments