update-motd

update-motd(5)                File Formats Manual               update-motd(5)

NAME
       update-motd - dynamic MOTD generation

SYNOPSIS
       /etc/update-motd.d/*

DESCRIPTION
       UNIX/Linux system adminstrators often communicate important information
       to console and remote users by maintaining text in the file  /etc/motd,
       which  is  displayed by the pam_motd(8) module on interactive shell lo-
       gins.

       Traditionally, this file is static text,  typically  installed  by  the
       distribution  and  only  updated on release upgrades, or overwritten by
       the local administrator with pertinent information.

       Ubuntu introduced the update-motd framework, by which  the  motd(5)  is
       dynamically assembled from a collection of scripts at login.

       Executable  scripts in /etc/update-motd.d/* are executed by pam_motd(8)
       as the root user at each login, and this information is concatenated in
       /run/motd.dynamic.   The order of script execution is determined by the
       run-parts(8) --lsbsysinit option (basically alphabetical order, with  a
       few caveats).

       On   Ubuntu   systems,  /etc/motd  is  typically  a  symbolic  link  to
       /run/motd.dynamic.

BEST PRACTICES
       MOTD fragments must be scripts  in  /etc/update-motd.d,  must  be  exe-
       cutable, and must emit information on standard out.

       Scripts  should be named named NN-xxxxxx where NN is a two digit number
       indicating their position in the MOTD, and  xxxxxx  is  an  appropriate
       name for the script.

       Scripts  must  not  have  filename  extensions, per run-parts(8) --lsb-
       sysinit instructions.

       Packages should add scripts directly  into  /etc/update-motd.d,  rather
       than  symlinks to other scripts, such that administrators can modify or
       remove these scripts and upgrades will  not  wipe  the  local  changes.
       Consider  using a simple shell script that simply calls exec on the ex-
       ternal utility.

       Long running operations (such as network calls) or  resource  intensive
       scripts  should  cache  output,  and  only  update that output if it is
       deemed expired.  For instance:

         /etc/update-motd.d/50-news
         #!/bin/sh
         out=/run/foo
         script="w3m -dump http://news.google.com/"
         if [ -f "$out" ]; then
           # Output exists, print it
           echo
           cat "$out"
           # See if it's expired, and background update
           lastrun=$(stat -c %Y "$out") || lastrun=0
           expiration=$(expr $lastrun + 86400)
           if [ $(date +%s) -ge $expiration ]; then
             $script > "$out" &
           fi
         else
           # No cache at all, so update in the background
           $script > "$out" &
         fi

       Scripts should emit a blank line before output, and end with a  newline
       character.  For instance:

         /etc/update-motd/05-lsb-release
         #!/bin/sh
         echo
         lsb-release -a

FILES
       /etc/motd, /run/motd.dynamic, /etc/update-motd.d

SEE ALSO
       motd(5), pam_motd(8), run-parts(8)

AUTHOR
       This  manpage and the update-motd framework was written by Dustin Kirk-
       land <kirkland@canonical.com> for Ubuntu systems (but may  be  used  by
       others).   Permission is granted to copy, distribute and/or modify this
       document under the terms of the GNU General Public License,  Version  3
       published by the Free Software Foundation.

       On  Debian systems, the complete text of the GNU General Public License
       can be found in /usr/share/common-licenses/GPL.

update-motd                      13 April 2010                  update-motd(5)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2024 Hurricane Electric. All Rights Reserved.