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 !!!
Sommaire de l'article
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, …
Pour ceux qui ne savent pas ce que c’est, voici un exemple de MOTD :
Si vous souhaitez connaitre d’autres astuces sur Linux pour administrer vos serveurs et vos stations de travail, un conseil lisez ce tutoriel : Bien gérer son serveur ou sa station de travail sous Linux.
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.
# apt-get install figlet
Puis après l’installation pour s’assurer que tout fonctionne correctement utiliser la commande suivante :
# figlet Quick-Tutoriel
Ensuite vous devez aller dans le répertoire /etc/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é.
# 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"
Ensuite je vais créer le fichier 00-header pour afficher le nom de mon serveur. En règle générale les serveurs de production sont affichés en rouge et les serveurs de validation, développement en vert.
#!/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 01-banner pour afficher la version du système utilisée ainsi que son nom de code et la version du noyau.
Voici le code commenté : #!/bin/sh # Appel du fichier avec les variables de couleurs . /etc/update-motd.d/colors # Execution du script python lsb-release pour utiliser les variables systèmes # pour récupérer RAPIDEMENT les informations de version . /etc/lsb-release echo $DISTRIB_DESCRIPTION $YELLOW "($DISTRIB_CODENAME)" $NONE "($(uname -o)" "$(uname -r)" "$(uname -m))"
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"
A cet instant voici ce que donne mon MOTD.
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 :
# chmod 755 00-hostname
La même chose sera appliquée aux autres fichiers en changeant bien sûr leur nom.
Ajouter des informations utiles à votre MOTD
Vous pouvez rajouter autant d’information que vous le souhaitez. Nous allons voir les classiques.
Voici mon code pour le fichier 02-sysinfo qui contient tout un tas d’info sur mon système comme le type de processeur, le nombre de cœurs et de processus actifs, le load average, la consommation de RAM, l’uptime, …..
#!/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 " " -f2` # 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 l'utilisation des disques diskused=`df -h | grep /dev/ploop14990p1 | awk {'print $5 "% of " $2'}` # Récupère les inodes utilisés inodeused=`df -i | grep /dev/ploop14990p1 | awk {'print $5'}` # 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 "\n" printf ""$LIGHT_GREEN printf " Disk Usage :" printf ""$NONE printf " $diskused" printf ""$LIGHT_GREEN printf " Inodes Used :" printf ""$NONE printf " $inodeused%" printf "\n" printf ""$LIGHT_GREEN printf " Adresse IP :" printf ""$LIGHT_RED printf " $addrip" printf ""$NONE printf "\n" printf ""$LIGHT_GREEN printf " Uptime :" printf ""$NONE printf " $uptime" printf "\n" printf "\n"
Voici ce que donne mon MOTD pour l’instant :
Si vous souhaitez utiliser mon MOTD dans le fichier 02-sysinfo, vous devrez ajuster le nom de la partition ou du disque que vous souhaitez afficher (1) ainsi que la carte réseau qui porte votre IP (2)
Utilisation avancée du MOTD
Si vous voulez encore ajouter des informations dans votre MOTD. Voici quelques options avancées que vous pouvez insérer.
Mises à jour
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 03-upgrade. Voici son contenu :
#!/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
Mon MOTD
Voici donc mon MOTD que j’installe sur mes serveurs :
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.
Si vous insérer d’autres informations dans votre MOTD ou si vous avez des exemples que vous utilisez dans vos entreprises n’hésitez pas à me les envoyer pour que je fasse une petite galerie. Cela peut être sympa et peut donner des idées.
Je pense que la commande à exécuter si le répertoire n’existe pas est :
mkdir /etc/update-motd.d && chmod 644 /etc/update-motd.d
(il manquait /etc devant le répertoire)
Bonjour, super tuto, merci!
par contre mon ip s’affiche en IPV6 me semble t-il…une idée?