runv-server

server tooling for runv.club
Log | Files | Refs | README

commit 0af2f17746f408a0ab4d4f19d321145142f2a1ae
parent 68da7eaf39410852228c36bab58a6e69a3ea67cd
Author: Pablo Murad <pablo@pablomurad.com>
Date:   Tue, 19 May 2026 21:11:59 -0300

motd

Diffstat:
Mdocs/05-tools-and-system-experience.md | 2+-
Mtools/motd/60-runv | 14++++++++------
2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/docs/05-tools-and-system-experience.md b/docs/05-tools-and-system-experience.md @@ -49,7 +49,7 @@ O ficheiro [`tools/motd/60-runv`](../tools/motd/60-runv) gera a mensagem de boas | Arte RUNV + tagline | Identidade visual alinhada ao site | | Comandos úteis | `runv-help`, `runv-links`, `lynx`, `tmux`, `byobu`, `mutt`, `chat`, `runvers`, `runv-games` | | Comunidade runv | `runv-profile`, `runv-finger`, `runv-who`, `runv-bulletin`, `runv-email-alias` | -| Últimas sessões SSH | Grelha 3×3 com as **9 sessões mais recentes** em `wtmp` (`last -w`); pode repetir o mesmo utilizador; **não** é quem está online agora | +| Últimos acessos recentes | Grelha 3×3 com até **9 membros distintos** (`last -w`); ordem = login mais recente de cada um; **não** é quem está online agora | A ajuda completa está em `runv-help` (inclui a secção Comunidade e email de membro). Detalhes dos comandos: [17-community-commands.md](17-community-commands.md) e [08-email.md](08-email.md). diff --git a/tools/motd/60-runv b/tools/motd/60-runv @@ -27,9 +27,9 @@ print_runv_art() { RUNV_ART } -# MOTD: últimas 9 sessões SSH (last(1)) → grelha 3×3 +# MOTD: até 9 utilizadores únicos com sessão recente (last(1)) → grelha 3×3 # Histórico wtmp; não é presença em tempo real (runv-status + who para admin). -# Pode repetir o mesmo utilizador; ordem = sessões mais recentes primeiro. +# Cada nome aparece uma vez: ordem = login mais recente daquele user (primeira linha em last). # update-motd.d costuma ter PATH mínimo: tentar /usr/bin/last e /bin/last. print_last_sessions_3x3() { LAST_CMD=$(command -v last 2>/dev/null) || LAST_CMD= @@ -41,14 +41,16 @@ print_last_sessions_3x3() { fi tf=$(mktemp -t runvmotd.XXXXXX 2>/dev/null) || tf=/tmp/runvmotd.$$ trap 'rm -f "$tf"' EXIT HUP INT - # Ignora reboot, wtmp, entre/root, contas *-admin; até 9 sessões (sem deduplicar user) - "$LAST_CMD" -w -n 80 2>/dev/null | awk ' + # Ignora reboot, wtmp, entre/root, contas *-admin; até 9 utilizadores distintos + "$LAST_CMD" -w -n 500 2>/dev/null | awk ' /^reboot/ || /^wtmp/ || /^$/ { next } NF < 1 { next } { u = $1 if (u == "entre" || u == "root") next if (u ~ /-admin$/) next + if (u in seen) next + seen[u] = 1 print u if (++n >= 9) exit } @@ -61,8 +63,8 @@ print_last_sessions_3x3() { return fi - printf '\n%bÚltimas sessões SSH%b\n' "${B}" "${R}" - printf ' %b(histórico wtmp; não é quem está online agora)%b\n' "${D}" "${R}" + printf '\n%bÚltimos acessos recentes%b\n' "${B}" "${R}" + printf ' %b(um nome por membro; histórico wtmp; não é quem está online)%b\n' "${D}" "${R}" row=1 while [ "$row" -le 3 ]; do read -r c1 || c1=''