Supervision des process actifs

De la même façon que je voulais une supervision du nombre de sessions ouvertes sur mes serveurs distants, je voulais aussi superviser le nombre de process actifs. Je suis allé au plus simple en faisant un petit script qui me remonte les informations attendues par SNMP.


#!/bin/bash
# Plugin to check the number of process on the remote system
# by ramon

######################"

HOST=$1
WARNING=$2
CRITICAL=$3

PROCESS=$(snmpwalk $HOST -c public -v 1  1.3.6.1.2.1.25.1.6.0 -OvQ)
#echo "$PROCESS"

if [ "$PROCESS" -lt "$WARNING" ]
        then
                echo "OK : $PROCESS actives process"
                exit 0;
        else
                if [ "$PROCESS" -lt "$CRITICAL" ]
                        then
                                echo "Warning : $PROCESS actives process"
                                exit 1;
                        else
                                echo "Critical : $PROCESS actives process"
                                exit 2;
                fi
fi
 

Au passage, voici la configuration de la commande et du service pour Nagios.



define command{
        command_name    check_snmp_procs
        command_line    /usr/lib/nagios/plugins/check_process.sh $HOSTADDRESS$ '$ARG1$' '$ARG2$'
        }

define service {
        hostgroup_name                  debian-servers
        service_description             check_procs
        check_command                   check_snmp_procs!160!180
        use                             generic-service
}

 


Supervision du nombre de sessions ouvertes

Voulant superviser le nombre de sessions ouvertes sur mes serveurs, j’ai cherché un plugin Nagios qui remontait cette information par SNMP. Je n’ai pas trouvé de plugin vraiment satisfaisant pour moi.

Du coup, j’ai développé un petit script pour faire le boulot.


#!/bin/bash
# Plugin to check the number of connected users on the system
# by ramon

######################"

HOST=$1
WARNING=$2
CRITICAL=$3

USERS=$(snmpwalk $HOST -c public -v 1 .1.3.6.1.2.1.25.1.5.0 -OvQ)
#echo "$USERS"

if [ "$USERS" -lt "$WARNING" ]
        then
                echo "OK : Only $USERS connected"
                exit 0;
        else
                if [ "$USERS" -lt "$CRITICAL" ]
                        then
                                echo "Warning : $USERS connected"
                                exit 1;
                        else
                                echo "Critical : $USERS connected"
                                exit 2;
                fi
fi
 

Au passage, voici la configuration de la commande et du service pour Nagios.



define command{
        command_name    check_users
        command_line    /usr/lib/nagios/plugins/check_users.sh $HOSTADDRESS$ '$ARG1$' '$ARG2$'
        }

define service{
        use                             generic-service         ; Name of service template to use
        hostgroup_name                  debian-servers
        service_description             Current_Users
        check_command                   check_users!20!50
        }
 

Objectif

A la maison, ou au bureau, je me connecte régulièrement sur mes équipements en SSH. Et j’ai eu envie de personnaliser un peu les connexions, en affichant une citation à l’ouverture de la session. Il y a de nombreuses fortunes disponibles sur le net, et j’ai mis la main sur une qui cite les « Chuck Norris facts ».

Rapidement téléchargé, puis installé, j’ai maintenant le plaisir de découvrir de nouveaux facts à chaque connexion. :D

Afin de pouvoir installer cette fortune sur plusieurs machines rapidement, j’ai fait un petit script.


Téléchargement des facts

On télécharge le fichier. Pour ma part, j’ai créé une arborescnece pour dépposer les fortunes.


mkdir /usr/hsare/fortunes
cd /usr/share/fortunes
wget http://chucknorrisfacts.fr/fortunes/fortunes.txt

Sur ubuntu, il faut exécuter toutes les commande en super utilisateur (sudo).

On converti le fichier avec l’encodage UTF8 pour la prise en charge des accents et caractères spéciaux et on le renomme.


iconv -f iso-8859-1 -t utf8 fortunes.txt --output chuck

Puis on génère le fichier fortune


strfile -s -r chuck chuck.dat

On peut tester que l’appel à cette fortune fonctionne :


media:~$ fortune /usr/share/fortunes/chuck
Chuck Norris n'a pas de sang sur les mains, ses ennemis nettoient avant de mourir.

Il ne reste plus qu’à éditer le fichier ~/.bashrc et copier la ligne suivante


fortune /usr/share/fortunes/chuck


Script

Pour gagner du temps, j’ai fait un petit script.


#!/bin/bash

# Script d'installation des fortunes
# Creation : 2011/06/02
# Derniere modification : 2011/06/02
# Licence : GPL
#
# Syntaxe Ubuntu : # sudo ./FortunesInstall.sh

# Verification des droits utilisateurs pour l execution du script

if [ $EUID -ne 0 ]; then
   echo "Le script doit etre lance en root : # sudo $0 Arg OPT" 1>&2
   exit 1
fi

# Creation du dossier des fortunes
#mkdir /usr/share/fortunes

cd /usr/share/fortunes

# telechargement des "Chuck Norris Facts"
wget http://chucknorrisfacts.fr/fortunes/fortunes.txt

# Conversion et renommage du fichier
iconv -f iso-8859-1 -t utf8 /usr/share/fortunes/fortunes.txt --output /usr/share/fortunes/chuck

# Generation de la fortune
strfile -s -r /usr/share/fortunes/chuck /usr/share/fortunes/chuck.dat

# Configuration du bash pour afficher les fortunes
echo "fortune /usr/share/fortunes/chuck" >> ~/.bashrc


Autres fortunes

Si les facts de Chuck Norris ne vous convienennt pas, voici d’autres fortunes à télécharger et installer.
- http://www.fortunes-fr.org/data/litterature_francaise
- http://www.fortunes-fr.org/data/personnalites
- http://www.fortunes-fr.org/data/proverbes
- http://www.fortunes-fr.org/data/philosophie
- http://www.fortunes-fr.org/data/sciences

Le principe est le même, il faut télécharger le fichier puis le convertir à l’aide de la commande « strfile ».


 wget http://www.fortunes-fr.org/data/philosophie
 strfile philosophie philosophie.dat


Et avoir une vache qui parle

Il est possible d’avoir une vache (et d’autres animaux) qui cite les fortunes installées.


media:~$ fortune /usr/share/fortunes/chuck | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf | head -n1)
 ______________________________________
/ Jupiter est né de la cuisse de Chuck \
\ Norris                               /
 --------------------------------------
       \ (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~

Il suffit pour cela d’installer le paquet cowsay


aptitude install cowsay

Dans le fichier .bashrc, il faut ajouter la ligne suivante :


fortune /usr/share/fortunes/chuck | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf | head -n1)

Connexion SSH

Il y a toujours la nécessité d’avoir plusieurs consoles ouvertes, et d’en ouvrir de nouvelles pour se connecter sur d’autres équipements. Pour éviter d’avoir à saisir le password à chaque connexion, le plus simple est d’utiliser une clé SSH. Et cela permet d’utiliser les ressources du serveur distant sans à avoir à s’authentifier à chaque fois.

Afin de me simplifier la vie, j’utilise un petit script qui me permet rapidement de déclarer facilement une clé SSH sur le serveur distant.

Script

Le script est le suivant :


#!/bin/bash
cat ~/.ssh/id_dsa.pub | ssh $1 "cat - >>.ssh/authorized_keys"

Selon le type de clé créée localement, le fichier source peut être id_dsa.pub ou id_rsa.pub. Bien évidemment, il ne faut pas oublier de donner les droits d’exécution sur le script.

Le script, que j’ai nommé copy_ssh.sh est placé dans un répertoire de mon Home. Pour copier la clé sur le serveur distant, il me suffit d’exécuter le script, en plaçant comme argument le login et le serveur cible sous la forme login@serveur.

./copy_ssh.sh exploit@example.com

A l’exécution du script, le système distant demande un password. Lors de la connexion suivante il sera possible de se connecter sur le serveur sans saisir de password.

Création d’une clé SSH

Si le système client ne dispose pas encore d’une clé SSH, il est possible de la générer simplement en exécutant la commande suivante dans une console :

 ssh-keygen -t dsa