bash script - sysinfo
#!/usr/bin/env bash
# Display a read-only snapshot of the Linux machine running this script.
title='' label='' reset=''
if [[ -t 1 && ${TERM:-dumb} != dumb && -z ${NO_COLOR:-} ]]; then
title=$'\e[1;36m'
label=$'\e[1;32m'
reset=$'\e[0m'
fi
row() {
printf ' %s%-14s%s %s\n' "$label" "$1" "$reset" "${2:-Unavailable}"
}
os=''
if [[ -r /etc/os-release ]]; then
os=$(awk -F= '$1 == "PRETTY_NAME" { sub(/^[^=]*=/, ""); sub(/^"/, ""); sub(/"$/, ""); print; exit }' /etc/os-release)
fi
cpu=''
if command -v lscpu >/dev/null 2>&1; then
cpu=$(LC_ALL=C lscpu | awk -F: '$1 == "Model name" { sub(/^[[:space:]]+/, "", $2); print $2; exit }')
fi
if [[ -r /proc/loadavg ]]; then
read -r load1 load5 load15 _ < /proc/loadavg
fi
printf '\n%sLinux System Information%s\n\n' "$title" "$reset"
row 'Hostname' "$(uname -n)"
row 'OS' "${os:-Linux}"
row 'Kernel' "$(uname -r)"
row 'Architecture' "$(uname -m)"
row 'Uptime' "$(uptime -p 2>/dev/null || uptime 2>/dev/null)"
row 'CPU' "${cpu:-$(uname -m)}"
row 'Logical CPUs' "$(getconf _NPROCESSORS_ONLN 2>/dev/null)"
row 'Load 1/5/15m' "${load1:+$load1 / $load5 / $load15}"
row 'RAM' "$(LC_ALL=C free -h 2>/dev/null | awk '$1 == "Mem:" { print $3 " used / " $2 " total (" $7 " available)" }')"
row 'Swap' "$(LC_ALL=C free -h 2>/dev/null | awk '$1 == "Swap:" { print $3 " used / " $2 " total" }')"
printf '\n%sDisk usage%s\n' "$title" "$reset"
df -h / "${HOME:-/}" | awk '!seen[$0]++'
printf '\n%sNetwork addresses%s\n' "$title" "$reset"
if command -v ip >/dev/null 2>&1 && addresses=$(ip -brief address show scope global 2>/dev/null) && [[ -n $addresses ]]; then
printf '%s\n' "$addresses"
else
row 'Addresses' "$(hostname -I 2>/dev/null)"
fi
printf '\n'Revision history
Revision 1 · Original · Nov 3, 2026 · 00:29 UTC
Suggested edits
Log in to suggest an edit.