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.
#!/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.