netwerk

poort-check.sh

Controleer snel of een poort in gebruik is en welk proces er op luistert. Geeft een overzicht van alle bezette poorten als je geen argument meegeeft.

Script

#!/bin/bash
# poort-check.sh — controleer of een poort in gebruik is
#
# Gebruik:
#   ./poort-check.sh            # toon alle luisterende poorten
#   ./poort-check.sh 3000       # controleer poort 3000
#   ./poort-check.sh 3000 8080  # controleer meerdere poorten

set -euo pipefail

controleer_poort() {
    local poort="$1"
    local pid

    pid=$(fuser "${poort}/tcp" 2>/dev/null || true)

    if [[ -z "$pid" ]]; then
        echo "  ✓  poort ${poort}  —  vrij"
    else
        local info
        info=$(ps -p "$pid" -o comm=,args= 2>/dev/null | head -1)
        echo "  ✗  poort ${poort}  —  bezet door PID ${pid}: ${info}"
    fi
}

if [[ $# -eq 0 ]]; then
    echo "Alle luisterende TCP-poorten:"
    echo "------------------------------"
    ss -tlpn | awk 'NR>1 {
        split($4, a, ":")
        port = a[length(a)]
        match($6, /pid=([0-9]+)/, m)
        pid = m[1]
        cmd = ""
        if (pid) { ("ps -p " pid " -o comm= 2>/dev/null") | getline cmd }
        printf "  %-7s  PID %-6s  %s\n", port, pid, cmd
    }'
else
    echo "Poortcontrole:"
    for poort in "$@"; do
        controleer_poort "$poort"
    done
fi

Gebruik

chmod +x poort-check.sh

./poort-check.sh              # alle bezette poorten
./poort-check.sh 3000         # is poort 3000 vrij?
./poort-check.sh 80 443 8080  # meerdere poorten tegelijk

Voorbeeld uitvoer

$ ./poort-check.sh 3000 8080 22

Poortcontrole:
  ✗  poort 3000  —  bezet door PID 12345: mdserver
  ✓  poort 8080  —  vrij
  ✗  poort 22    —  bezet door PID 812: sshd

Eenregelige variant

Snel in een script gebruiken (zie ook fuser):

fuser 3000/tcp 2>/dev/null || echo "Poort 3000 vrij"