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://quick-tutoriel.com/creer-un-motd-pour-vos-serveurs-linux/
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 :
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/.
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Ă©.
# 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.
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.
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
Attention !!! Les lignes ne sâaffichent que si le nombre de paquets est > Ă 0.
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.