A two-column system dashboard delivered through the standard Linux
update-motd framework (/etc/update-motd.d + pam_motd).
dashmotd separates collect (slow / privilege-sensitive data, hourly) from render (login always composes the grid from live samples + collected cache), so SSH logins stay fast while system info, partitions, and containers reflect current status.
- Fast SSH logins — slow lookups run hourly; render stays light
- Two-column auto-sized grid of system status cells
- Live sections (sysinfo, partitions, docker) sampled at every login; others cached by collect
- Works across Debian, RHEL, Arch, and SUSE families
- Optional tools (
smartctl,openssl,figlet,docker, …) degrade gracefully when missing
- A supported Linux distribution (see Supported distributions)
- Root privileges to install (the installer configures systemd and MOTD hooks)
systemdrecommended (hourly collect timer); without it, rundashmotd-collectfrom cron- On Debian-family systems:
pam_motd+/etc/update-motd.d(usual default). Elsewhere the installer falls back to/etc/profile.d
Required commands: bash, paste, free, awk, sed, grep, mktemp
Recommended (sections degrade gracefully if missing): smartmontools (smartctl), openssl, curl or wget, figlet (dashmotd bundles the mono9 font), docker; on Arch also pacman-contrib (checkupdates)
# Debian / Ubuntu / Raspberry Pi / Zorin
sudo apt-get install -y smartmontools openssl wget curl figlet
# RHEL / Oracle Linux / Rocky / Alma / Fedora
sudo dnf install -y smartmontools openssl wget curl figlet
# Arch / Manjaro
sudo pacman -S --needed smartmontools openssl wget curl figlet pacman-contribcurl -fsSL https://raw.githubusercontent.com/wsj-br/dashmotd/main/install.sh | sudo bashOr install from a local tarball / clone:
# from a git clone
sudo ./install.sh
# from a release archive
DASHMOTD_TARBALL=./dashmotd.tar.gz sudo -E bash install.shSee Installation for prerequisites, update options, and config conflict handling.
Update an existing install:
sudo /opt/dashmotd/update.shPreview the dashboard:
run-parts /etc/update-motd.d/
# or
/opt/dashmotd/bin/dashmotd-renderForce a refresh of collected (cached) data, then preview again:
sudo systemctl start dashmotd.service
# or
sudo /opt/dashmotd/bin/dashmotd-collect| Layout key | Script | When | Contents |
|---|---|---|---|
sysinfo |
system_info.sh |
live | Kernel, tasks, CPU %, load, memory %, temperature |
network |
network_info.sh |
collect | Public IP (IPv6 + IPv4 when dual-stack; daily cache) and private IP |
partitions |
partition_info.sh |
live | Usage % plus free/total from df -h (e.g. 66% / 304G free of 917G) |
disks |
disk_info.sh |
collect | SMART power-on / temp / cycles / spare (smartctl) |
packages |
packages_info.sh |
collect | Upgradable count via apt/dnf/yum/pacman/zypper + reboot flag |
certs |
certificate_info.sh |
collect | TLS certificate expiry via openssl |
docker |
docker_info.sh |
live | Container names and running/stopped marks |
lastupdate |
last_update.sh |
collect | When dashmotd-collect last refreshed cached data |
| Family | Examples | Package manager | Login display |
|---|---|---|---|
| Debian | Debian, Ubuntu, Zorin, Raspberry Pi OS, Mint, Pop!_OS | apt |
/etc/update-motd.d + pam_motd |
| RHEL | Oracle Linux, RHEL, Rocky, Alma, Fedora, Amazon Linux | dnf / yum |
/etc/profile.d (if no update-motd.d) |
| Arch | Arch, Manjaro, EndeavourOS | pacman (+ checkupdates) |
/etc/profile.d |
| SUSE | openSUSE, SLES | zypper |
/etc/profile.d |
Package manager is auto-detected (PKG_MANAGER=auto); override in config if needed.
- Installation — prerequisites, install/update options, uninstall
- Configuration —
configreference, custom sections, static MOTD - Architecture — collect/render paths and shell hooks
- Troubleshooting — common issues and fixes
sudo /opt/dashmotd/uninstall.shSee Installation for what is removed and restored.
Copyright (c) 2026 Waldemar Scudeller Junior.
Licensed under the MIT License — see LICENSE.