Objectif

Après avoir mis en place l’affichage de fortunes, j’ai voulu avoir la possibilité de personnaliser un peu plus le démarrage de mes sessions SSH.

Le plus simple pour cela est d’utiliser les scripts MOTD qui sont très personnalisables.


Personnalisation

Dans le répertoire /etc/update-motd.d/ se trouvent plusieurs scripts qui servent à construire le MOTD qui sera affiché à l’ouverture d’une session SSH.


media:/etc/update-motd.d$ ls -lah
total 48k
drwxr-xr-x    2 root     root         4.0k Jun  2 21:09 .
drwxr-xr-x  162 root     root          12k Jun  2 12:37 ..
-rwxr-xr-x    1 root     root         1.2k Jun  2 19:54 00-header
-rwxr-xr-x    1 root     root         1.1k Jun  2 19:55 10-help-text
-rwxr-xr-x    1 root     root          149 Jan 25 11:32 90-updates-available
-rwxr-xr-x    1 root     root          129 Apr 19 09:23 91-release-upgrade
-rwxr-xr-x    1 root     root          142 Jan 25 11:32 98-fsck-at-reboot
-rwxr-xr-x    1 root     root          144 Jan 25 11:32 98-reboot-required
-rwxr-xr-x    1 root     root         1.1k Oct 21  2010 99-footer

Pour faire afficher les informations de son choix, il suffit de rajouter un script numéroté.

Pour connaitre les sessions SSH ouvertes sur le serveur, j’ai créé le script suivant


cd /etc/update-motd.d
sudo touch 11-custom
sudo chmod 755 11-custom

Voici le contenu du script, qui va m’afficher la date, l’uptime et le load average du serveur et le détail des connexions ouvertes.


#!/bin/sh
date
echo ""
uptime
echo ""
echo "Connexions en cours"
who -H
echo

A chaque connexion SSH, j’ai maintenant ça qui est affiché :


Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic i686)
Thu Jun  2 21:42:14 CEST 2011

 21:42:14 up  9:06,  5 users,  load average: 0.01, 0.05, 0.06

Connexions en cours
NAME     LINE         TIME         COMMENT
ramon    tty7         Jun  2 12:36 (:0)
ramon    pts/0        Jun  2 12:38 (grey-linux.local)
ramon    pts/1        Jun  2 12:42 (grey-linux.local)
ramon    pts/2        Jun  2 12:44 (grey-linux.local)
ramon    pts/3        Jun  2 12:53 (grey-linux.local)

Last login: Thu Jun  2 21:10:55 2011 from grey-linux.local


Activation de la bannière Login SSH

Il est possible d’afficher un message d’information au moment la connexion SSH, lorsque le système demande le mot de passe.

Pour cela, il y a un paramètre a activer dans le fichier de configuration SSH /etc/ssh/sshd_config, puis à saisir le message qui sera affiché dans le fichier idoine.


sudo vi /etc/sshd_config

Dans le ficher sshd_config il faut dé-commenter la ligne suivante :


Banner /etc/issue.net

Il faut ensuite éditer le fichier /etc/issue.net pour y saisir le message qu’on souhaite voir afficher :


*********************************************************************
****  Avertissement ! Accès aux seules personnes autorisées !   ****
****  Vos activités au cours de cette session sont susceptibles  ****
****  d' être enregistrées. Toute activité illicite fera l'objet ****
****  d'un recours en justice !                                  ****
*********************************************************************

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)

Problème récurrent

Régulièrement, et notamment en exécutant aptitude, un message d’erreur, annonçant un problème de configuration de locales s’affichait sur la console.


perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "fr_FR"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Ce message d’erreur est apparu suite à une installation groupée de plusieurs paquets et applications. Du coup, je me suis retrouvé incapable de savoir quelle installation avait généré ce problème.

Lorsque je vérifie les locales, je constate qu’il y a effectivement un défaut.


server:~$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=fr_FR
LANGUAGE=
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
LC_MONETARY="fr_FR"
LC_MESSAGES="fr_FR"
LC_PAPER="fr_FR"
LC_NAME="fr_FR"
LC_ADDRESS="fr_FR"
LC_TELEPHONE="fr_FR"
LC_MEASUREMENT="fr_FR"
LC_IDENTIFICATION="fr_FR"
LC_ALL=

La reconfiguration des locales ne m’as pas permis de régler le problème.


server:~/Bureau/Post Install/V228$ sudo dpkg-reconfigure locales
Generating locales...
  en_AG.UTF-8... up-to-date
  en_AU.UTF-8... up-to-date
  en_BW.UTF-8... up-to-date
  en_CA.UTF-8... up-to-date
  en_DK.UTF-8... up-to-date
  en_GB.UTF-8... up-to-date
  en_HK.UTF-8... up-to-date
  en_IE.UTF-8... up-to-date
  en_IN.UTF-8... up-to-date
  en_NG.UTF-8... up-to-date
  en_NZ.UTF-8... up-to-date
  en_PH.UTF-8... up-to-date
  en_SG.UTF-8... up-to-date
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... up-to-date
  en_ZW.UTF-8... up-to-date
  fr_BE.UTF-8... up-to-date
  fr_CA.UTF-8... up-to-date
  fr_CH.UTF-8... up-to-date
  fr_FR.UTF-8... up-to-date
  fr_LU.UTF-8... up-to-date
Generation complete.

Résolution temporaire

Dans un premier temps, la commande suivante a permis de régler le problème :


export LC_ALL=fr_FR.UTF-8

Jusqu’à ce que je me rende compte qu’au redémarrage de l’ordinateur, j’avais à nouveau le même problème… Rageant…


Nouvelle résolution

J’ai tenté la réinstallation du pack de langage Français.


sudo apt-get install --reinstall language-pack-fr

Il m’avait semblé que cette fois c’était la bonne. Et au redémarrage de l’ordinateur, j’avais toujours ce problème de locales !!! Doublement rageant !


Résolution permanente

C’est sur un forum anglophone dédié à Debian que j’ai trouvé ce qui semble être la bonne méthode.


Server:/usr/lib/locale$ sudo locale-gen fr_FR
Generating locales...
  fr_FR.ISO-8859-1... done
Generation complete.

Et cette fois la commande locale m’affiche une configuration correcte, toujours présente au reboot de l’ordinateur.


server:/usr/lib/locale$ locale
LANG=fr_FR
LANGUAGE=
LC_CTYPE="fr_FR"
LC_NUMERIC="fr_FR"
LC_TIME="fr_FR"
LC_COLLATE="fr_FR"
LC_MONETARY="fr_FR"
LC_MESSAGES="fr_FR"
LC_PAPER="fr_FR"
LC_NAME="fr_FR"
LC_ADDRESS="fr_FR"
LC_TELEPHONE="fr_FR"
LC_MEASUREMENT="fr_FR"
LC_IDENTIFICATION="fr_FR"
LC_ALL=

J’ai indiqué sur l’article les principales opérations que j’avais testé, car cela pourra toujours servir à quelqu’un d’autre et résoudre de façon définitive son problème.

Webmin

Webmin permet d’administrer plus simplement, par une interface Web unique, une machine. Je suis en train de préparer une machine, sur laquelle j’ai installé Ubuntu 11.04 à la maison, pour centraliser plusieurs besoins et ressources. Et c’est donc naturellement que j’ai envisagé d’installer Webmin.


Déclaration des nouvelles sources

Pour ajouter un nouveau dépôt, il faut éditer le fichier sources.list.


sudo vi /etc/apt/sources.list

Puis ajouter les URL des dépots Webmin en copiant les lignes suivantes dans le fichier.


# Repository Webmin
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Après avoir sauvegardé les modifications apportées sur le fichier, il faut ensuite importer la clé GPG associée. Pour cela, on se place dans un répertoire temporaire pour télécharger la clé, avant de l’importer.


Srv:~# cd /usr/src/
Srv:/usr/src# wget http://www.webmin.com/jcameron-key.asc
Srv:/usr/src# sudo apt-key add jcameron-key.asc


Installation de Webmin

Les dépôt ayant été configurés, il faut mettre à jour les dépôts, et il sera ensuite possible d’installer la dernière version stable de webmin.


Srv:~# sudo apt-get update
Srv:~# sudo apt-get install webmin


Accès à Webmin

La connexion à Webmin se fait normalement avec le compte root, qui est désactivé sous Ubuntu. Il reste donc une dernière opération pour pouvoir accéder à Webmin.


Srv:~# sudo /usr/share/webmin/changepass.pl /etc/webmin root Mot_De_Passe

L’accès à l’interface web de webmin en utilisant l’URL suivante :

https://IP_SERVEUR:10000/

Ensuite on pourra se connecter avec ce compte Webmin à l’adresse. Il sera ensuite possible de créer un nouveau compte pour accéder à Webmin. Il fadura choisir la méthode “Unix authentication” pour utiliser le password local du compte créé