Voici un script que j’utilise pour m’afficher les informations sur mes serveurs lors d’une connexion en SSH.
Ces informations sont mises à jour par le biais d’une tâche Cron toutes les 5 minutes.
Ci-dessous, le code du script inspiré de cet article.
#! /bin/sh
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"`
echo "\033[0;32m
\033[0;37m`date +"%A %e %B %Y %R"`\033[0;32m
\033[0;37m`uname -srmo`\033[0;31m
\033[0;37m\033[0;31m
\033[0;37m\033[0;31m`cat /etc/hostname`
\033[0;37mUptime..............: $UPTIME\033[0;31m
\033[0;37mRAM.................: $((`cat /proc/meminfo | grep MemFree | awk {'print $2'}`/1024))MB (Free) / $((`cat /proc/meminfo | grep MemTotal | awk {'print $2'}`/1024))MB (Total)\033[0;31m
\033[0;37mProcessus en cours..: `ps ax | wc -l | tr -d " "`\033[0;31m
\033[0;37m\033[0;31m
\033[0;37mAdresses IP.........: `ip a | /bin/grep 'brd' | /usr/bin/cut -d " " -f 6 | /usr/bin/cut -d "/" -f 1 | grep -E "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"` / `wget -q -O - http://icanhazip.com/ | tail`\033[0;31m
\033[0;37m" > /etc/motd
La tâche cron :
*/5 * * * * root /scripts/update_motd.sh
Et en bonus, le playbook pour le déployer avec Ansible.
- name: Mise en place du script update motd
hosts: all
tasks:
- name: Creation dossier
file:
path: /scripts
state: directory
- name: Telechargement script
template:
src: update_motd.sh
dest: /scripts/update_motd.sh
mode: "u=rwx,g=rx,o=rx"
- cron:
name: update_motd
minute: "*/5"
user: "root"
job: "/scripts/update_motd.sh"
