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.
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.