Bash-skript är en viktig del av en systemadministratörs jobb. De låter dig automatisera både vardagliga och kritiska uppgifter.

En av de bästa sakerna med skript är att de kan köras oberoende utan mänsklig inblandning, men ibland kan det vara utmanande att automatisera uppgifter som kräver användarlösenord. Låt oss titta på hur du säkert kan automatisera skript som kräver lösenord utan att kompromissa med säkerheten.

Skapa ett enkelt skript

Låt oss anta att du vill skapa ett enkelt skript som säkerhetskopierar din Linux-hemmapp till en fjärrplats så att du enkelt kan återställa dina data i händelse av dataförlust.

Börja med att skapa en Bash-skriptfil i din hemmapp, med pekkommandot eller någon annan metod, och namnge det backup_home.sh. Använd gärna vilket namn och vilken katalog du vill.

Skriptet använder rsync kommando, ett kraftfullt filkopieringsverktyg, för att säkerhetskopiera alla filer i din lokala hemkatalog till en fjärrserver.

Kopiera innehållet i följande skript och klistra in det i din Bash-fil. Kom ihåg att ersätta användaren john med rätt namn på din lokala hemanvändare. Ange även korrekt användarnamn och IP-adress för fjärrservern.

instagram viewer

#!/bin/bash
#Kopiera data till en fjärrserver
rsync -avl --mkpath /home/john användarnamn@avlägsen_server/home/Backup

Om du inte har en fjärrserver att testa med kan du helt enkelt installera VirtualBox och konfigurera en virtuell dator på din lokala dator. Använd VM-gästen som din fjärrserver.

Spara filen. För att köra skriptet måste du ge det exekveringsbehörighet med kommandot sudo chmod 755. Alla användare kan köra skriptet men bara sudo-användarna kan ändra filen.

Slutligen, kör Bash-skriptet från terminalen med kommandot:

./backup_home.sh

När du kör det här skriptet kommer du att bli ombedd att ange fjärrserverlösenordet. Detta är inte idealiskt om du vill köra skriptet utan mänsklig inblandning, till exempel när du använder Cron.

Automatisera lösenordsinloggning

Installera sshpass, en icke-interaktiv lösenordsleverantör, på din lokala PC eller den PC som du kommer att köra skriptet från.

På Debian-baserade distros

Om du är på en Debian-baserad distro som Ubuntu, Pop!_OS och Lubuntu:

sudo apt uppdatering && sudo apt Installera sshpass

På RHEL och Fedora

dnf Installera sshpass

Efter installation av sshpass, ändra skriptet så att det ser ut som följer.

#!/bin/bash
#Kopiera data till en fjärrserver
sshpass -s "ditt lösenord" rsync -avl --mkpath /home/john användarnamn@remote_server/home/Backup

Här anger du lösenordet i klartext. Uppenbarligen är detta inte det perfekta sättet, eftersom det inte är säkert och inte bra praxis. Om manuset någonsin hamnar i fel händer är du i djupa problem.

För att göra detta säkrare kommer vi att använda GnuPG, ett säkert krypteringsverktyg med öppen källkod.

Kryptera ditt lösenord

GnuPG är installerat som standard på de flesta Linux-system, men om det inte är installerat på ditt system, så här installerar du GnuPG.

Skapa en dold fil med namnet hemligheter med hjälp av kommandot tryck på .hemligheter. Eftersom vi har gjort filen dold som standard som en extra säkerhetsåtgärd, gör du så här visa dolda filer på Linux.

I hemlighetsfilen anger du lösenordet för din fjärrdator och sparar det.

Kryptera sedan filen med hjälp av gpg kommando.

sudogpg.hemligheter

Du kommer att uppmanas att ange en säker och stark lösenfras för att öppna den krypterade filen.

GnuPG kommer att skapa en ny fil med tillägget .gpg läggs till det gamla filnamnet. Ditt nya filnamn bör nu vara hemligheter.gpg, förutsatt att du använde hemligheter filnamn.

Om du visar innehållet i secrets.gpg med hjälp av katt kommandot, kommer du att presenteras med lite dryg text för att visa att ditt lösenord är krypterat.

För att se innehållet i filen i vanlig text måste du dekryptera den med följande kommando (du kommer att bli ombedd att ange lösenordet du angav under krypteringen):

gpg-dqhemlig.gpg

Använda ett krypterat lösenord i ditt skript

För att använda det krypterade lösenordet i skriptet, uppdatera skriptet enligt följande:

#!/bin/bash
#Kopiera data till en fjärrserver
gpg -dq secrets.gpg | sshpass rsync -avl --mkpath /home/john användarnamn@avlägsen_server/home/Backup

Kör säkerhetskopieringsskripten igen, och den här gången kommer du inte att bli tillfrågad om ett lösenord.

Automatisera uppgifter med Bash-skript

GnuGP används ofta för att säkra känsliga filer och data på din PC och är också ett utmärkt verktyg för att säkra lösenord i automatiserade Bash-skript på Linux.

Det finns mycket du kan göra med Bash-skript. Bash är ett kraftfullt verktyg som kan hjälpa dig att automatisera många saker på Linux och att lära sig att skriva Bash-skript är en värdefull investering.