https://github.com/rust-motd/rust-motd

Beautiful, useful, configurable MOTD generation with zero runtime dependencies

如果显示 hostname 时想使用 figlet 的话需要安装一下:

paru -S figlet

the oneshot service

cat <<EOF > /etc/systemd/system/rust-motd.service

[Unit]
Description=run rust-motd
Wants=network-online.target
After=network-online.target

[Service]
Restart=on-failure
TimeoutStopSec=5
StandardOutput=file:/etc/motd
ExecStart=rust-motd /root/.config/rust-motd/config.toml
Type=oneshot

[Install]
WantedBy=default.target

EOF

the timer:

cat <<EOF > /etc/systemd/system/rust-motd.timer

[Unit]
Description=Run rust-motd every 5 minutes and on boot

[Timer]
OnBootSec=30s
OnUnitActiveSec=5min 

[Install]
WantedBy=timers.target

EOF

the config:

注意替换配置中的 Your-Location-Here 为你的实际城市名(英文).

替换 user001 为你自己的用户名.

cat <<EOF > /root/.config/rust-motd/config.toml
[global]
 progress_full_character = "="
 progress_empty_character = "="
 progress_prefix = "["
 progress_suffix = "]"
 time_format = "%Y-%m-%d %H:%M:%S"

 [banner]
color = "red"
 command = "hostname | figlet -f slant"
# if you don't want a dependency on figlet, you can generate your
# banner however you want, put it in a file, and then use something like:
# command = "cat banner.txt"

 [weather]
 url = "https://wttr.in/Your-Location-Here?0"
 proxy = "http://127.0.0.1:7890"

# [service_status]
# Accounts = "accounts-daemon"
# Cron = "cron"

[docker_status]
# Local containers MUST start with a slash
# https://github.com/moby/moby/issues/6705
#"/nextcloud-nextcloud-mariadb-1" = "Nextcloud Database"

 [uptime]
 prefix = "Up"

 [user_service_status]
 clash = "clash"
 systemd-resolved = "systemd-resolved"
 gpg-agent = "gpg-agent"

# [ssl_certificates]
# sort_method = "manual"
#
#    [ssl_certificates.certs]
#    CertName1 = "/path/to/cert1.pem"
#    CertName2 = "/path/to/cert2.pem"

 [filesystems]
 root = "/"
 home = "/home"

 [memory]
 swap_pos = "beside" # or "below" or "none"

# [fail_2_ban]
# jails = ["sshd", "anotherjail"]

 [last_login]
 root = 2
 user001 = 1

[last_run]


EOF

enable:

sudo systemctl enable --now rust-motd.timer