Le Message Of The Day (communément appelé MOTD) est un message d’accueil ou des notifications importantes que les administrateurs de serveurs peuvent configurer pour s’afficher lorsqu’un utilisateur se connecte au serveur via SSH.
Ce tutoriel vous montre comment mettre à jour et personnaliser le MOTD sur un serveur Ubuntu 22.04.
Prérequis
- Serveur Ubuntu 22.04 avec accès root ou un utilisateur avec des privilèges sudo.
- Accès SSH au serveur.
Étape 1 : connexion au Serveur
Connectez-vous à votre serveur Ubuntu via SSH:
ssh USER@SERVER_IP -pPORT
Code language: CSS (css)
Étape 2 : vérifier le MOTD existant
Pour voir le MOTD actuel, utilisez la commande suivante :
cat /run/motd.dynamic
Étape 3 : modifier le MOTD dynamique
Ubuntu 22.04 utilise des scripts dans le répertoire /etc/update-motd.d/
pour générer une partie du MOTD dynamiquement. Vous pouvez ajouter, supprimer ou modifier les scripts dans ce répertoire pour personnaliser davantage le MOTD.
Entête MOTD
Nous allons créer un entête qui contient le nom de notre serveur en ASCII art, ce qui nous permettra de bien l’identifier lors de nos sessions SSH:
sudo nano /etc/update-motd.d/00-custom
Et on y ajoute notre script bash:
#!/bin/sh
# Reset
Color_Off='\033[0m' # Text Reset
# Bold
BBlack='\033[1;30m' # Black
BRed='\033[1;31m' # Red
BGreen='\033[1;32m' # Green
BYellow='\033[1;33m' # Yellow
BBlue='\033[1;34m' # Blue
BPurple='\033[1;35m' # Purple / Magenta
BCyan='\033[1;36m' # Cyan
BWhite='\033[1;37m' # White
# Set the text color to green
printf "$BGreen"
# https://patorjk.com/software/taag/#p=display&f=Doom&t=APOLLO%20.%20SKYMINDS%20.%20NET
cat << "EOF"
___ ______ _____ _ _ _____ _____ _ ____ ____ ________ _ _______ _____ _ _ _____ _____
/ _ \ | ___ \ _ | | | | | _ | / ___| | / /\ \ / / \/ |_ _| \ | | _ \/ ___| | \ | || ___|_ _|
/ /_\ \| |_/ / | | | | | | | | | | \ `--.| |/ / \ V /| . . | | | | \| | | | |\ `--. | \| || |__ | |
| _ || __/| | | | | | | | | | | `--. \ \ \ / | |\/| | | | | . ` | | | | `--. \ | . ` || __| | |
| | | || | \ \_/ / |____| |___\ \_/ / _ /\__/ / |\ \ | | | | | |_| |_| |\ | |/ / /\__/ / _ | |\ || |___ | |
\_| |_/\_| \___/\_____/\_____/\___/ (_) \____/\_| \_/ \_/ \_| |_/\___/\_| \_/___/ \____/ (_) \_| \_/\____/ \_/
EOF
# Set the text color to magenta
printf "$BPurple"
# Left image lines
left1=" 88 88 "
left2=" 88 88 "
left3=" 88 88 "
left4=",adPPYYba, 8b,dPPYba, ,adPPYba, 88 88 ,adPPYba,"
left5="\"\" \`Y8 88P' \"8a a8\" \"8a 88 88 a8\" \"8a"
left6=",adPPPPP88 88 d8 8b d8 88 88 8b d8"
left7="88, ,88 88b, ,a8\" \"8a, ,a8\" 88 88 \"8a, ,a8\""
left8="\"8bbdP\"Y8 88\`YbbdP\"' \"\"YbbdP\"' 88 88 \"\"YbbdP\"'"
left9=" 88 "
left10=" 88 "
# Right image lines
right1=" . + . . . . . ."
right2=" . . . *"
right3=" . * . . . . . . + ."
right4=" \"You Are Here\" . . + . . ."
right5=". | . . . . . ."
right6=" | . . . +. + ."
right7=" \\|/ . . . ."
right8=" . . V . * . . . . + ."
right9=" + . . . +"
right10=" . . + .+. ."
# Combine and print
echo "$left1 $right1"
echo "$left2 $right2"
echo "$left3 $right3"
echo "$left4 $right4"
echo "$left5 $right5"
echo "$left6 $right6"
echo "$left7 $right7"
echo "$left8 $right8"
echo "$left9 $right9"
echo "$left10 $right10"
# STATS
upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
secs=$((${upSeconds}%60))
mins=$((${upSeconds}/60%60))
hours=$((${upSeconds}/3600%24))
days=$((${upSeconds}/86400))
UPTIME=$(printf "%d days, %02dh%02dm%02ds" "$days" "$hours" "$mins" "$secs")
# get the load averages
read one five fifteen rest < /proc/loadavg
# text in yellow
printf "$BYellow"
echo "
.~~. .~~. `date +"%A, %e %B %Y, %r"`
'. \ ' ' / .' `uname -srmo`
.~ .~~~..~.
: .~.'~'.~. : Uptime.............: ${UPTIME}
~ ( ) ( ) ~ Memory.............: `cat /proc/meminfo | grep MemFree | awk {'print $2'}`kB (Free) / `cat /proc/meminfo | grep MemTotal | awk {'print $2'}`kB (Total)
( : '~'.~.'~' : ) Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
~ .~ ( ) ~. ~ Running Processes..: `ps ax | wc -l | tr -d " "`
( : '~' : ) IP Addresses.......: `ip a | grep glo | awk '{print $2}' | head -1 | cut -f1 -d/` and `wget -q -O - https://icanhazip.com/ | tail`
'~ .~~~. ~' Weather............: `curl -s "https://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|FR|FR|NANTES|" | sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([CF]\).*/\2°\3, \1/p'`
'~'
"
# text default colour
printf "$Color_Off"
Code language: PHP (php)
Cela affiche le nom du serveur (apollo.skyminds.net
) puis une petite frise, et enfin les statistiques ainsi que la météo pour Nantes. Vous pouvez modifier la ville dans l’avant-dernière ligne.
Notez que j’ai compilé deux images pour qu’elles s’affichent sur les mêmes lignes: le mot “apollo” en ASCII art et une version de l’univers avec le texte “You are here!”. Il faut jouer avec l’indentation mais au bout de quelques essais, cela rend plutôt pas mal je trouve.
Rendez le script exécutable :
sudo chmod +x /etc/update-motd.d/00-custom
Lancez la compilation de tous les modules dynamiques pour obtenir le MOTD final qui sera affiché à chaque connexion SSH:
run-parts /etc/update-motd.d/ > /run/motd.dynamic
Code language: JavaScript (javascript)