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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#! /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 :
1 |
*/5 * * * * root /scripts/update_motd.sh |
Et en bonus, le playbook pour le déployer avec Ansible.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
- 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" |