Si comme moi vous avez plusieurs serveurs Linux à vous occuper, créer un MOTD (Message Of The Day) est là modification indispensable à réaliser lors de l’installation de votre serveur. Souvent ignoré, il peut vous éviter des erreurs et même vous donner des informations importantes sur votre serveur dès votre connexion. INDISPENSABLE !!!
Source : https://cloriou.fr/2020/04/02/ajouter-motd-dynamique-debian/
C’est quoi un MOTD ?
MOTD (Message Of The Day) est un message envoyé à un logiciel client lors de son identification sur des serveurs (tels que les serveurs IRC, SSH ou encore FTP). Généralement, ce message est utilisé pour afficher les règles, les contacts administratifs, ou encore un dessin ASCII Art.
Ce message peut être personnalisé pour afficher le nom de la machine, son IP, diverses statistiques comme la consommation CPU, Mémoire, …
Voici un exemple de MOTD :

Comment modifier le MOTD ?
Tout d’abord ce tutoriel se déroulera sur Ubuntu. Pour faire simple, nous allons créer des scripts que nous allons placés dans un répertoire spécifique. Ces scripts seront exécutés à chaque connexion de l’utilisateur.
Sur mes switchs j’ai pris l’habitude de créer une bannière en Ascii avec le nom de la société. Nous allons donc reproduire ceci sur nos serveurs Linux. Pour créer ce style d’écriture particulier nous allons d’abord ajouter le paquet figlet.
sudo apt-get update && apt-get install figlet
Puis après l’installation pour s’assurer que tout fonctionne correctement utiliser la commande suivante :
sudo figlet Quick-Tutoriel
___ _ _ _____ _ _ _
/ _ \ _ _(_) ___| | __ |_ _| _| |_ ___ _ __(_) ___| |
| | | | | | | |/ __| |/ /____| || | | | __/ _ \| '__| |/ _ \ |
| |_| | |_| | | (__| <_____| || |_| | || (_) | | | | __/ |
\__\_\\__,_|_|\___|_|\_\ |_| \__,_|\__\___/|_| |_|\___|_|
Ensuite vous devez aller dans le répertoire /etc/update-motd.d/
cd etc/update-motd.d
Info !!! Si celui-ci n’existe pas, il faut alors le créer et lui donner les droits en exécution suivant avec cette commande :
mkdir /update-motd.d && chmod 644 /update-motd.d
Si ce dossier existe, vous devez voir plusieurs fichiers (= scripts) avec des numéros. Le principe est simple, tous les scripts se trouvant dans ce dossier sont exécutés lors de la connexion. Il suffit de les nommés 00-xxx, 10-xxx, 20-xxx, etc. pour qu’ils soient exécutés dans l’ordre de votre choix.
Comme je veux repartir à zéro, je décide donc de déplacer ces fichiers dans mon répertoire Temp.
# move * /temp/
Les premiers pas pour créer un MOTD.
Je vous donnerais mes sources à la fin de l’article. J’ai pas mal écumé le web pour trouver un modèle qui me plaisais et qui était pratique.
Afin d’améliorer un peu le rendu du MOTD, nous allons ajouter de la couleur. La première étape sera d’afficher le nom du serveur avec la police type ASCII le tout en couleur. Tout un programme.
Je vais donc créer un fichier colors et je vais coller les codes couleurs ci-dessous dans le fichier. J’ai aussi rajouté les possibilités de mettre un texte en gras ou souligné.
nano colors
# Reset Colors
NONE="\033[m"
# Colors
WHITE="\033[1;37m"
GREEN="\033[1;32m"
RED="\033[0;32;31m"
YELLOW="\033[1;33m"
BLUE="\033[34m"
CYAN="\033[36m"
LIGHT_GREEN="\033[1;32m"
LIGHT_RED="\033[1;31m"
# Bold
BOLD="\033[1m"
# Underline
UNDERLINE="\033[4m"
On va maintenant passer au script pour afficher le nom du serveur. Toujours dans le dossier /update-motd.d nous allons créer un fichier 00-hostname via nano 00-hostname et dont le code est le suivant :
nano 00-hostname
testez :
sudo /etc/update-motd.d/00-hostname
#!/bin/sh
# Appel du fichier avec les codes couleurs
. /etc/update-motd.d/colors
# Affichage du nom du serveur avec l'extension Prod ou Valid
# En rouge pour les serveurs de Prod et en vert pour les autres.
printf "\n"$LIGHT_RED
figlet " "$(hostname -s) - Prod
printf $NONE
printf "\n"
Ensuite je vais créer le fichier 10-banner pour afficher la version du système utilisée ainsi que son nom de code et la version du noyau.
nano 10-banner
testez :
sudo /etc/update-motd.d/10-banner
#!/bin/bash
#
# Copyright (C) 2009-2010 Canonical Ltd.
#
# Authors: Dustin Kirkland <kirkland@canonical.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
. /etc/update-motd.d/colors
[ -r /etc/update-motd.d/lsb-release ] && . /etc/update-motd.d/lsb-release
if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
# Fall back to using the very slow lsb_release utility
DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi
re='(.*\()(.*)(\).*)'
if [[ $DISTRIB_DESCRIPTION =~ $re ]]; then
DISTRIB_DESCRIPTION=$(printf "%s%s%s%s%s" "${BASH_REMATCH[1]}" "${YELLOW}" "${BASH_REMATCH[2]}" "${NONE}" "${BASH_REMATCH[3]}")
fi
echo -e " "$DISTRIB_DESCRIPTION "(kernel "$(uname -r)")\n"
# Update the information for next time
printf "DISTRIB_DESCRIPTION=\"%s\"" "$(lsb_release -s -d)" > /etc/update-motd.d/lsb-release &
Une petite précision sur l’exécution de lsb_release. Cet utilitaire rempli des variables système pour pouvoir récupérer les informations de version de son serveur Linux. Voici les variables avec un exemple de contenu :
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
Maintenant, je souhaite dans mon cas, ajouter différentes informations comme le CPU, la charge du système, la RAM libre, etc. J’ai donc pour cela, créé un script que j’ai nommé 20-sysinfo dont le code est le suivant :
nano 20-sysinfo
#!/bin/bash
# Appel du fichier avec les variables de couleurs
. /etc/update-motd.d/colors
# Récupération des informations à afficher
# Récupération des infos sur le processeur
proc=`cat /proc/cpuinfo | grep model | cut -c14- | sed -n "2 p"`
# Supprime les espaces dans Avant/ Après
proc=$(echo "${proc}" | sed 's/^ *//g')
# Récupère le nombre de coeurs
coeurs=`cat /proc/cpuinfo | grep -i "^processor" | wc -l`
# récupère la mémoire RAM SWAP Libre et Total
memfree=`cat /proc/meminfo | grep MemFree | awk {'print $2'}`
memtotal=`cat /proc/meminfo | grep MemTotal | awk {'print $2'}`
swaptotal=`cat /proc/meminfo | grep SwapTotal | awk {'print $2 " " $3'}`
pourcentfree=$((($memfree * 100)/$memtotal))
# Récupère l'uptime du serveur
uptime=`uptime -p`
# Récupère l'adresse IP du serveur
addrip=`hostname -I | cut -d " " -f1`
# Récupère le nombre de processus en exécution
process=`ps ax | wc -l | tr -d " "`
# Récupère le nombre d'utilisateur connecté en SSH/Console
connecteduser=`who | wc -l`
# Récupére le loadavg
read one five fifteen rest < /proc/loadavg
# Affichage des variables
printf ""$LIGHT_GREEN
printf " Processeur :"
printf ""$NONE
printf " $proc ($coeurs cores)"
printf "\n"
printf ""$LIGHT_GREEN
printf " Charge CPU :"
printf ""$NONE
printf " $one (1min) / $five (5min) / $fifteen (15min)"
printf "\n"
printf ""$LIGHT_GREEN
printf " RAM :"
printf ""$NONE
printf " $(($memfree/1024)) MB soit $pourcentfree%% Libre / $(($memtotal/1024)) MB Total"
printf "\n"
printf ""$LIGHT_GREEN
printf " Processes :"
printf ""$NONE
printf " $process"
printf ""$LIGHT_GREEN
printf " Users logged in :"
printf ""$NONE
printf " $connecteduser "
printf ""$LIGHT_GREEN
printf "Swap:"
printf ""$NONE
printf " $swaptotal"
printf ""$NONE
printf "\n"
printf ""$LIGHT_GREEN
printf " Adresse IP"
printf ""$NONE
printf " $addrip"
printf "\n"
printf ""$LIGHT_GREEN
printf " Uptime :"
printf ""$NONE
printf " $uptime"
printf "\n"
testez :
sudo /etc/update-motd.d/20-sysinfo
Astuce !!! Lorsque je me connecte en SSH j’ai toujours une ligne qui vient s’incruster à la fin de mon MOTD. C
Astuce !!! Lorsque je me connecte en SSH j’ai toujours une ligne qui vient s’incruster à la fin de mon MOTD. C’est la ligne qui commence par last login :….. Pour ne plus avoir afficher cette ligne il suffit d’éditer le fichier de config de SSH (/etc/ssh/sshd_config) puis de mettre cette option à No, PrintLastLog no, puis de redémarrer le service SSH.
Ajouter des informations utiles à votre MOTD.
Vous pouvez rajouter autant d’information que vous le souhaitez. Nous allons voir les classiques…
Autre point important, vous devez rendre exécutable les fichiers que vous créez, sinon cela ne fonctionnera pas. Vous devrez utiliser la commande ci-dessous :
sudo chmod 755 00-hostname
La même chose sera appliquée aux autres fichiers en changeant bien sûr leur nom.
sudo chmod 755 10-banner
sudo chmod 755 20-sysinfo
Si vous voulez encore ajouter des informations dans votre MOTD. Voici quelques options avancées que vous pouvez insérer.
Grâce à la commande apt-get vous pouvez savoir si des mises à jour sont disponibles et si des paquets ne sont plus utiles à votre installation. J’ai nommé le fichier 30-upgrade.
nano 30-upgrade
#!/bin/bash
. /etc/update-motd.d/colors
n=$(apt-get -qq --just-print dist-upgrade | cut -f 2 -d " " | sort -u | wc -l)
if [[ $n -gt 0 ]]; then
printf $LIGHT_RED
printf " You have %s packages waiting for upgrades." "$n"
printf $NONE"\n\n"
fi
n=$(apt-get -qq --just-print autoremove | cut -f 2 -d " " | sort -u | wc -l)
if [[ $n -gt 0 ]]; then
printf $YELLOW
printf " You have %s packages that were automatically installed and are not needed anymore." "$n"
printf $NONE"\n\n"
fi
sudo chmod 755 30-upgrade
Si vous souhaitez utiliser mon MOTD dans le fichier 30-sysinfo, vous devrez ajuster le nom de la partition ou du disque que vous souhaitez afficher ainsi que la carte réseau qui porte votre IP
Attention !!! Les lignes ne s’affichent que si le nombre de paquets est > à 0.
Il nous reste à supprimer l’ancien MOTD, via la commande :
rm /etc/motd
Il faut maintenant le récréer via la commande :
ln -s /var/run/motd /etc/motd
Rendez le script exécutable à l’aide de la commande chmod :
sudo chmod +x /etc/update-motd.d/00-hostname
sudo chmod +x /etc/update-motd.d/10-banner
sudo chmod +x /etc/update-motd.d/20-sysinfo
sudo chmod +x /etc/update-motd.d/30-upgrade
Testez l’exécution du MOTD et validez qu’aucune erreur de script n’apparaît :
sudo run-parts /etc/update-motd.d/
Voici le MOTD :

D’un coup d’œil j’ai quelques informations essentielles sur mon serveur. J’attache une importance particulière à la couleur de la bannière si c’est rouge c’est de la production donc ATTENTION !!!, si c’est vert c’est de la validation donc moins risquée. Ces petites astuces mnémotechniques sont bien pratiques.
La connexion à votre serveur peut-être plus ou moins longue si vous rajouter beaucoup d’informations dans votre MOTD. Il faudra donc faire des choix.
