Présentation

De temps à autre, j’ai mon ordinateur qui freeze un peu. Je me doutais qu’il s’agissait d’un problème au niveau du NFS. J’ai fini par comprendre que lorsque je faisais un peu tout et n’importe quoi avec mon serveur ca pouvait parfois coincer avec les partages NFS actifs sur mon PC.


Résolution

Et puis impossible de démonter les partages sur mon PC. Je recevais des messages pas sympas, comme quoi le services NFS étaient busy. Et mon file manager qui ne répondait plus.

Je ne pouvais plus démonter un partage qui n’existait plus. Et lorsque j’ai voulu monter un nouveau partage, mon système m’a déclaré :

mount.nfs: Stale NFS file handle

Ce problème survient si des modifications ont été effectuées sur le serveur hôte et que le client considère toujours des fichiers ou une arborescence comme actifs sur le serveur.

Bob@Linux:/$sudo umount -f /mnt/local

Source : http://www.cyberciti.biz/tips/nfs-stale-file-handle-error-and-solution.html


Présentation

Mon lecteur multimédia a la capacité d’accéder à des partages NFS. J’ai donc voulu donner accès à mon serveur personnel. Il n’y a pas la possibilité de changer sur le lecteur Tvix l’arborescence à laquelle il veut accéder. Et sur mon serveur cela ne m’arrangeait pas de créer une nouvelle arbrecence car mes fichiers se trouvent sur un autre disque.

J’ai décidé de créer le dossier racine pour le partage NFS, mais de le lier au dossier existant sur l’autre disque. Plutôt qu’utiliser des liens symboliques (ou physiques), j’ai préféré utiliser l’option bind de mount, qui me parait plus élégante. C’est juste une ligne à activer ou désactiver dans un fichier de conf. Elle permet de monter l’intégralité du contenu, ou un répertoire seulement, d’un disque ou d’un dossier dans un autre répertoire. Il est ensuite possible de gérer les droits d’accès au niveau du répertoire lié, par exemple pour un accès FTP.


Configuration serveur : Bind de deux dossiers

Il faut d’abord créer le dossier pour le partage NFS.

Bob@Linux:/$ sudo mkdir -p /tvixhd4

La configuration se fait ensuite dans le fichier /etc/exports, où sont déclarés tous les partages NFS.

Bob@Linux:/$ sudo vi /etc/exports 

Le montage est déclaré de la façon suivante : ‘/media/disque/répertoire /PATH/répertoire-lié none bind 0 0′

Pour déclarer un partage pour mon serveur multimedia j’ai déclaré le montage suivant :

/mnt/raid1/share/ /tvixhd4 none bind 0 0

Il reste à recharger la conf à l’aide de la commande suivante :

Bob@Linux:/$ sudo mount -a 

Il est possible de créer un montage temporaire. Si le dossier existe déjà, une seule commande suffit :

Bob@Linux:/$ sudo mount --bind '/media/disque/répertoire /PATH/répertoire-lié 


Configuration Tvix : déclaration du partage NFS

Sur le serveur Tvix, il faut aller dans le menu pour accéder à la configuration des partages pour déclarer l’adresse du serveur. Dans mon cas, j’ai dponc saisi l’adresse IP de mons erveur sur le partage tvixhd4. Après avoir sauvegardé, j’ai bien accès à mes photos sur le partage.


Présentation

Ça a mis un peu de temps à rentrer, mais ca commence. :)

Il y a deux configurations. Sur le serveur hébergeant les ressources à partager, il faut déclarer quelles ressources sont à partager. Et avec qui. Sur le client, qui veux accéder aux ressources, il faut déclarer quelles ressources et sur quel serveur auxquelles on veut accéder.


Partie Serveur

Sur le serveur il faut éditer le fichier /etc/exports où seront déclarés tous les partages NFS.

ramon@mediaserver:/$ sudo vi /etc/exports 

Dans le fichier on saisi les partages et les adresses des clients, puis quelques paramètres de configuration. :

/mnt/raid1 192.168.0.10(rw,all_squash,anonuid=1000,anongid=1000,sync)

On recharge la configuration avec la commande suivante :

root@mediaserver:~$ sudo exportfs -a


Partie Client

Il faut déjà créer le dossier qui sera le point de montage.

Bob@Linux:/$ sudo mkdir -p /mnt/mediaserver2

Et on va ensuite déclarer le nouveau montage NFS

Bob@Linux:/$sudo vi /etc/fstab

Dans le fichier il faut déclarer le path de la ressource distante puis le point de montage local ou sera montée le partage NFS.

192.168.0.1:/mnt/raid1/ /mnt/mediaserver2 nfs user,noauto,rw    0       0

On recharge le fichier de configuration et on peut ensuite monter le partage.

Bob@Linux:/$sudo sudo mount -a
Bob@Linux:/$sudo sudo mount /mnt/mediaserver2/


Présentation

Je crois bien que l’une des commande que je tape le plus souvent est la consultation des logs.

Bob@Linux:/$tail -f /var/log/syslog

Et pour me faciliter la vie, j’ai voulu me faire un petit raccourci pour lancer cette commande. Et du coup, en profiter pour mettre en place la colorisation des logs.


Résolution

J’ai installé les paquets suivants

Bob@Linux:/$sudo aptitude install ccze syslog-ng

Le paquet syslog-ng n’est pas forcément nécessaire, mais comme j’ai pris l’habitude de l’installer et de l’utiliser, surtout dans la gestion d’un syslog centralisé, je le mets maintenant systématiquement.
Le paquet ccze est le paquet qui colorise les logs (et pas que les logs d’ailleurs).

ll ne reste plus qu’à éditer le fichier de personnalisation du bash

Bob@Linux:/$sudo  vi /home/bob/.bashrc 

Et à ajouter les lignes suivantes :

# Colorisation des logs
logtail() { tail -f $1 | ccze -A; }
alias logt='logtail'
alias logsys='logtail /var/log/syslog'
 

La première ligne permet de déclarer la nouvelle commande « logtail » qui exécutera automatiquement une colorisation des logs sur un tail. En paramètre il suffit d’indiquer le fichier de logs à exploiter. La commande logt est un alias de logtail (c’est toujours 3 lettres de moins à saisir).

Et comme la consultation du syslog est la principale consultation que je fais, j’ai rajouté un nouvel alias où je spécifie exactement le log à exploiter.


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)