Skripting med Bash og PowerShell

Skip to content

Hvis du har gjort den samme oppgaven for tredje gang, er det på tide å automatisere den. Skripting handler om å la maskinen gjøre det kjedelige arbeidet for deg, raskere og uten å glemme noe.

Hvorfor automatisere?

Noen oppgaver i IT-drift gjøres ofte:

  • Oppdatere servere
  • Opprette brukere
  • Ta backup
  • Restarte tjenester etter en oppdatering
  • Sjekke at tjenester kjører

Å gjøre disse manuelt hver gang tar tid, og det er lett å glemme et steg. Et script gjør det samme hver gang, uten å klage.

Bash: Skripting i Linux

Bash er skallet (terminalen) i de fleste Linux-distribusjoner, og det kan også kjøre scripts. Et Bash-script er rett og slett en tekstfil med kommandoer som kjøres i rekkefølge.

Ditt første script

Lag en fil som heter oppdater.sh:

#!/bin/bash
# Oppdater pakkelisten og installer oppdateringer
echo "Oppdaterer systemet..."
sudo apt update
sudo apt upgrade -y
echo "Ferdig!"

Gjør filen kjørbar og kjør den:

chmod +x oppdater.sh
./oppdater.sh

#!/bin/bash

Den første linjen kalles en shebang. Den forteller operativsystemet at filen skal kjøres med Bash. Uten den vet ikke systemet hvilket program som skal tolke scriptet.

Variabler og input

#!/bin/bash
BRUKERNAVN=$1

if [ -z "$BRUKERNAVN" ]; then
    echo "Bruk: ./lag_bruker.sh <brukernavn>"
    exit 1
fi

sudo adduser "$BRUKERNAVN"
sudo usermod -aG sudo "$BRUKERNAVN"
echo "Bruker $BRUKERNAVN opprettet med sudo-tilgang."

Her tar scriptet inn et brukernavn som argument ($1 er det første argumentet). Hvis du kjører ./lag_bruker.sh ola, vil det opprette brukeren ola og gi den sudo-tilgang.

Nyttige Bash-konsepter

Konsept Eksempel Hva det gjør
Variabel NAVN="Ola" Lagrer en verdi
Argument $1, $2 Input fra kommandolinjen
If-sjekk if [ -f "fil.txt" ]; then Sjekker om en fil finnes
For-løkke for f in *.log; do Gjør noe for hver fil som matcher
Pipe cat logg.txt \| grep "ERROR" Sender output fra en kommando til en annen

PowerShell: Skripting i Windows

PowerShell er Windows sitt svar på Bash, men det er mer objektorientert. Det jobber med objekter i stedet for bare tekst, noe som gjør det kraftig for administrasjon av Windows-systemer.

Eksempel: Sjekk diskplass

# Sjekk ledig diskplass
Get-PSDrive -PSProvider FileSystem | Select-Object Name, 
    @{Name="Brukt (GB)"; Expression={[math]::Round($_.Used / 1GB, 2)}},
    @{Name="Ledig (GB)"; Expression={[math]::Round($_.Free / 1GB, 2)}}

Eksempel: Installere programvare med Winget

# Installer flere programmer på en gang
winget install Mozilla.Firefox
winget install Microsoft.VisualStudioCode
winget install Git.Git
winget install Python.Python.3.12

Dette er mye raskere enn å laste ned og installere alt manuelt. Du kan lagre listen i et script og kjøre det hver gang du setter opp en ny maskin.

Easy Oppgave 1 - Lag et oppdaterings-script

Skriv et Bash-script som:

  1. Oppdaterer pakkelisten
  2. Installerer alle tilgjengelige oppdateringer
  3. Restarter Nginx (eller en annen tjeneste du har kjørende)
  4. Skriver ut en melding når det er ferdig

Kjør det på en av dine VMer og se at det fungerer.

Easy Oppgave 2 - Automatiser maskinoppsett

Lag et PowerShell-script (.ps1) eller en enkel liste med winget install-kommandoer for alle programmene du trenger på en ny PC. Tenk over:

  • Hvilke programmer installerer du alltid?
  • Kan du også konfigurere noen innstillinger med scriptet?

Neste gang du setter opp en maskin, kjører du bare scriptet i stedet for å bruke en time på manuell installasjon.

Oppsummering

  • Hvis du gjør noe mer enn to ganger, vurder å automatisere det
  • Bash (Linux) og PowerShell (Windows) er de vanligste verktøyene for skripting
  • Bash-scripts er tekstfiler med kommandoer som kjøres i rekkefølge
  • PowerShell jobber med objekter og er kraftig for Windows-administrasjon
  • Variabler, argumenter, if-sjekker og løkker er de viktigste byggeklossene