public paste

bash script - sysinfo

By matt · Nov 3, 2026 · 00:29 UTC · No expiration

Format · Shell

#!/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.