Bash-Skripte sind ein wichtiger Bestandteil der Arbeit eines Systemadministrators. Sie ermöglichen es Ihnen, sowohl alltägliche als auch kritische Aufgaben zu automatisieren.
Eines der besten Dinge an Skripten ist, dass sie ohne menschliches Eingreifen unabhängig ausgeführt werden können, aber manchmal kann es schwierig sein, Aufgaben zu automatisieren, die Benutzerpasswörter erfordern. Sehen wir uns an, wie Sie Skripts, die Kennwörter erfordern, sicher automatisieren können, ohne die Sicherheit zu gefährden.
Erstellen eines einfachen Skripts
Nehmen wir an, Sie möchten ein einfaches Skript erstellen, das Ihren Linux-Home-Ordner an einem entfernten Ort sichert, damit Sie Ihre Daten im Falle eines Datenverlusts einfach wiederherstellen können.
Erstellen Sie zunächst eine Bash-Skriptdatei in Ihrem Home-Ordner. mit dem Touch-Befehl oder irgendeine andere Methode, und benennen Sie sie backup_home.sh. Fühlen Sie sich frei, einen beliebigen Namen und ein Verzeichnis Ihrer Wahl zu verwenden.
Das Skript verwendet die
rsync Befehl, ein leistungsstarkes Tool zum Kopieren von Dateien, um alle Dateien in Ihrem lokalen Home-Verzeichnis auf einem Remote-Server zu sichern.Kopieren Sie den Inhalt des folgenden Skripts und fügen Sie ihn in Ihre Bash-Datei ein. Denken Sie daran, den Benutzer john durch den korrekten Namen Ihres lokalen Heimbenutzers zu ersetzen. Geben Sie außerdem den richtigen Benutzernamen und die richtige IP-Adresse für den Remote-Server an.
#!/bin/bash
#Daten auf einen entfernten Server kopieren
rsync -avl --mkpath /home/john Benutzername@Fernbedienung_server/home/Backup
Wenn Sie keinen Remote-Server zum Testen haben, können Sie einfach Installieren Sie VirtualBox und richten Sie eine VM ein auf Ihrem lokalen Rechner. Verwenden Sie den VM-Gast als Ihren Remote-Server.
Speicher die Datei. Um das Skript auszuführen, müssen Sie ihm mit dem Befehl die Ausführungsberechtigung erteilen sudo chmod 755. Alle Benutzer können das Skript ausführen, aber nur die sudo-Benutzer können die Datei ändern.
Führen Sie schließlich das Bash-Skript vom Terminal aus mit dem folgenden Befehl aus:
./backup_home.sh
Immer wenn Sie dieses Skript ausführen, werden Sie aufgefordert, das Passwort des Remote-Servers einzugeben. Dies ist nicht ideal, wenn Sie das Skript ohne menschliches Eingreifen ausführen möchten, z. B. bei der Verwendung von Cron.
Passwort-Login automatisieren
Installieren sshpass, ein nicht interaktiver Kennwortanbieter, auf Ihrem lokalen PC oder dem PC, von dem aus Sie das Skript ausführen.
Auf Debian-basierten Distributionen
Wenn Sie eine Debian-basierte Distribution wie Ubuntu, Pop!_OS und Lubuntu verwenden:
sudo apt aktualisieren && sudo apt Installieren sshpass
Auf RHEL und Fedora
dnf Installieren sshpass
Ändern Sie nach der Installation von sshpass das Skript so, dass es wie folgt aussieht.
#!/bin/bash
#Daten auf einen entfernten Server kopieren
sshpass-p "Ihr Passwort" rsync -avl --mkpath /home/john Benutzername@remote_server/home/Backup
Hier geben Sie das Passwort im Klartext ein. Offensichtlich ist dies nicht der ideale Weg, da es nicht sicher und keine gute Praxis ist. Wenn das Drehbuch jemals in die falschen Hände gerät, sind Sie in großen Schwierigkeiten.
Um dies sicherer zu machen, verwenden wir GnuPG, ein sicheres und Open-Source-Verschlüsselungstool.
Verschlüsseln Ihres Passworts
GnuPG ist standardmäßig auf den meisten Linux-Systemen installiert, aber falls es nicht auf Ihrem System installiert ist, So installieren Sie GnuPG.
Erstellen Sie eine versteckte Datei mit dem Namen Geheimnisse mit dem Befehl Berühren Sie .Geheimnisse. Da wir die Datei als zusätzliche Sicherheitsmaßnahme standardmäßig ausgeblendet haben, gehen Sie wie folgt vor Versteckte Dateien unter Linux anzeigen.
Geben Sie in der Secrets-Datei das Passwort Ihres Remote-PCs ein und speichern Sie es.
Als nächstes verschlüsseln Sie die Datei mit der gpg Befehl.
sudogpg.Geheimnisse
Sie werden aufgefordert, eine sichere und starke Passphrase zum Öffnen der verschlüsselten Datei einzugeben.
GnuPG erstellt eine neue Datei mit der Erweiterung .gpg an den alten Dateinamen angehängt. Ihr neuer Dateiname sollte jetzt lauten Geheimnisse.gpg, vorausgesetzt, Sie haben die verwendet Geheimnisse Dateinamen.
Wenn Sie den Inhalt von secrets.gpg mit der Katze Befehl, wird Ihnen ein Kauderwelsch-Text angezeigt, um zu zeigen, dass Ihr Passwort verschlüsselt ist.
Um den Inhalt der Datei im Klartext anzuzeigen, müssen Sie sie mit dem folgenden Befehl entschlüsseln (Sie werden aufgefordert, das Kennwort einzugeben, das Sie während der Verschlüsselung festgelegt haben):
gpg-dqgeheim.gpg
Verwenden eines verschlüsselten Passworts in Ihrem Skript
Um das verschlüsselte Passwort im Skript zu verwenden, aktualisieren Sie das Skript wie folgt:
#!/bin/bash
#Daten auf einen entfernten Server kopieren
gpg -dq Geheimnisse.gpg | sshpass rsync -avl --mkpath /home/john Benutzername@Fernbedienung_server/home/Backup
Führen Sie die Sicherungsskripts erneut aus, und dieses Mal werden Sie nicht zur Eingabe eines Kennworts aufgefordert.
Automatisieren Sie Aufgaben mit Bash-Skripten
GnuGP wird häufig zum Sichern sensibler Dateien und Daten auf Ihrem PC verwendet und ist auch ein großartiges Tool zum Sichern von Passwörtern in automatisierten Bash-Skripten unter Linux.
Mit Bash-Skripten können Sie eine Menge tun. Bash ist ein leistungsstarkes Tool, mit dem Sie viele Dinge unter Linux automatisieren können, und das Schreiben von Bash-Skripten zu lernen, ist eine lohnende Investition.