Linux System Inventory and Baseline

From Carini MediaWiki
Jump to navigation Jump to search


Inventario e baseline del sistema

Questa pagina raccoglie comandi utili per creare uno snapshot strutturato dello stato del sistema Linux, utile per:

  • troubleshooting
  • audit tecnico
  • confronto nel tempo (baseline)
  • analisi post-incidente

Sistema operativo e risorse

Processi in esecuzione

Il seguente comando genera un file del tipo:

processes_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco dei processi in formato ad albero (forest)
  • ordinamento per PPID
out="./processes_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(ps -eo pid:8,ppid:8,pcpu:8,nlwp:8,pmem:8,rss:12,drs:12,size:12,lstart:24,cmd --forest --sort=ppid)

{
  printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
  printf '# '
  printf '%s ' "${cmd[@]}"
  printf '\n\n'
  "${cmd[@]}"
} > "$out"

Servizi di sistema

Il seguente comando genera un file del tipo:

services_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco completo dei servizi gestiti da systemd
  • servizi attivi, inattivi, falliti o disabilitati
out="./services_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(systemctl list-units --type=service --all)

{
  printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
  printf '# '
  printf '%s ' "${cmd[@]}"
  printf '\n\n'
  "${cmd[@]}"
} > "$out"

Memoria e swap

Il seguente comando genera un file del tipo:

memory_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • stato della memoria RAM
  • stato dello swap
out="./memory_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(free -h)

{
  printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
  printf '# '
  printf '%s ' "${cmd[@]}"
  printf '\n\n'
  "${cmd[@]}"
} > "$out"

Storage

Filesystem montati

Il seguente comando genera un file del tipo:

filesystems_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco dei filesystem montati
  • tipo di filesystem
  • spazio totale, utilizzato e disponibile
  • percentuale di utilizzo
  • punto di mount
out="./filesystems_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(df -hT)

{
  printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
  printf '# '
  printf '%s ' "${cmd[@]}"
  printf '\n\n'
  "${cmd[@]}"
} > "$out"

Dispositivi a blocchi

Il seguente comando genera un file del tipo:

blockdevices_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco dei dispositivi a blocchi
  • relazione tra dischi, partizioni e mount point
out="./blockdevices_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(lsblk -f)

{
  printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
  printf '# '
  printf '%s ' "${cmd[@]}"
  printf '\n\n'
  "${cmd[@]}"
} > "$out"

Containerizzazione

Container Docker

Il seguente comando genera un file del tipo:

docker_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco di tutti i container Docker
  • stato dei container, inclusi quelli arrestati
  • immagine utilizzata
  • comando di avvio
  • porte pubblicate
  • nome del container
out="./docker_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(docker ps -a)

{
printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
printf '# '
printf '%s ' "${cmd[@]}"
printf '\n\n'
"${cmd[@]}"
} > "$out"

Immagini Docker

Il seguente comando genera un file del tipo:

docker_images_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco delle immagini Docker presenti sul sistema
  • repository e tag
  • identificativo dell'immagine
  • data di creazione
  • dimensione dell'immagine
out="./docker_images_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(docker images)

{
printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
printf '# '
printf '%s ' "${cmd[@]}"
printf '\n\n'
"${cmd[@]}"
} > "$out"

Reti Docker

Il seguente comando genera un file del tipo:

docker_networks_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco delle reti Docker configurate
  • identificativo della rete
  • nome della rete
  • driver utilizzato
  • ambito della rete
out="./docker_networks_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(docker network ls)

{
printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
printf '# '
printf '%s ' "${cmd[@]}"
printf '\n\n'
"${cmd[@]}"
} > "$out"

Volumi Docker

Il seguente comando genera un file del tipo:

docker_volumes_nomehost_YYYYMMDD_HHMMSS.txt

Il file contiene:

  • intestazione con hostname e timestamp ISO 8601
  • comando eseguito (per ripetibilità)
  • elenco dei volumi Docker configurati
  • nome del volume
  • driver utilizzato
out="./docker_volumes_$(hostname -s)_$(date +'%Y%m%d_%H%M%S').txt"
cmd=(docker volume ls)

{
printf '# host=%s time=%s\n' "$(hostname -f 2>/dev/null || hostname)" "$(date -Iseconds)"
printf '# '
printf '%s ' "${cmd[@]}"
printf '\n\n'
"${cmd[@]}"
} > "$out"