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.
Oppgave 1 - Lag et oppdaterings-script
Skriv et Bash-script som:
- Oppdaterer pakkelisten
- Installerer alle tilgjengelige oppdateringer
- Restarter Nginx (eller en annen tjeneste du har kjørende)
- Skriver ut en melding når det er ferdig
Kjør det på en av dine VMer og se at det fungerer.
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