1 Visualiser l`utilisation des jetons

Transcription

1 Visualiser l`utilisation des jetons
PLM Mathrice
9 février 2011
Personnalisation du hostname affiché par Matlab et Maple
Lorsque Matlab ou Maple sont utilisés avec un serveur de jetons, ce dernier offre la possibilité
de connaı̂tre par qui sont utilisés les autres jetons. C’est le rôle de la commande lmstat (cf. 1). Les
informations sont assez basiques puisqu’il s’agit du nom de la machine et du nom de l’utilisateur
qui a lancé le processus.
Le nom des machines qui occupent un jeton n’est pas celui vu par le serveur de jetons (ie.
celui associé à son adresse IP). Il lui est transmis au démarrage de chaque instance (sur les clients)
qui récupère la valeur retournée par commande hostname. Cela n’est pas toujours suffisamment
explicite pour identifier la machine. Nous allons donc voir ici comment modifier le nom d’hôte qui
sera affiché par le serveur de jetons sans toucher à ce que retourne la commande hostname.
1
1.1
Visualiser l’utilisation des jetons
Matlab
La commande lmstat affiche la liste des de jetons en cours d’utilisation. La façon de l’invoquer
dépend de la version de matlab utilisée.
Avant la version 2010b, lmstat est accessible directement depuis le répertoire etc du dossier
d’installation. Par exemple, si Matlab 2008 a été installé dans /usr/local/matlab-R2008 cela donne :
bash> cd / u s r / l o c a l / matlab−R2008/ e t c
bash> . / l m s t a t −a −c . . / l i c e n s e s / l i c e n s e . dat
A partir de la version 2010, il faut utiliser la commande lmutil qui se trouve dans le dossier
etc/glnxa64 (version 64bits) ou etc/glnx86 (version 32bits) du répertoire d’installation de Matlab.
Par exemple, si Matlab 2010b 64bits a été installé dans /usr/local/matlab-R2010b cela donne :
bash> cd / u s r / l o c a l / matlab−R2010b/ e t c / g l n x a 6 4
bash> . / l m u t i l l m s t a t −a −c . . / . . / l i c e n c e s / l i c e n c e . dat
1.2
Maple
La commande lmutil est aussi livrée avec Maple. Son emplacement dépend également de la version
utilisée. Avec les versions 9.0 et 9.5, elle se trouve dans le répertoire FLEXlm/UNIX/LINUX du
dossier d’installation de Maple. Avec les versions 11 et 12, elle se trouve dans le dossier des binaires
du répertoire ou Maple à été installé. Pour les versions 32bits il s’agit de bin.IBM INTEL LINUX.
En 64bits, c’est bin.X86 64 LINUX.
Si Maple 9.0 a été installé dans /usr/local/maple-9.0, cela donne :
bash> cd / u s r / l o c a l / maple −9.0/FLEXlm/UNIX/LINUX
bash> . / l m u t i l l m s t a t −a −c . . / . . / l i c e n c e s / l i c e n c e . dat
2
Compilation de la bibliothèque
Le rôle de cette bibliothèque est de remplacer la fonction gethosname() de la bibliothèque standard
par une nouvelle nous permettant de retourner un nom de machine plus explicite. Elle est composée
de deux fichiers : my-hostname.h1 et my-hostname.c2 .
Listing 1: my-hostname.h
#include
#include
#include
#include
< s t d l i b . h>
<s t d i o . h>
<s y s / utsname . h>
<s t r i n g . h>
extern int gethostname ( char ∗name , s i z e t l e n ) ;
Listing 2: my-hostname.c
#include ”my−hostname . h”
int gethostname ( char ∗name , s i z e t l e n ) {
struct utsname buf ;
char∗ s t r ;
int c = 0 ;
int i = 0 ;
s t r = g e t e n v ( ”MY HOSTNAME” ) ;
/∗ No environment v a r i a b l e a v a i l a b l e : u s i n g uname ( ) ∗/
i f ( s t r == NULL) {
i f ( uname(& buf ) < 0 )
return −1;
s t r = buf . nodename ;
}
for ( i =0 ; i <s t r l e n ( s t r ) && c<l e n −1 ; i ++)
name [ c++] = s t r [ i ] ;
name [ c ] = ’ \0 ’ ;
return 0 ;
}
1
2
http://plm.math.cnrs.fr/my-hostname.h
http://plm.math.cnrs.fr/my-hostname.c
La compilation s’effectue de la façon suivante (testée sur une distribution Debian lenny i386
ou amd64 avec gcc 4.3.2 et libc 2.7-1 ) :
bash> g c c −Wall −s h a r e d − f p i c −o my−hostname . s o my−hostname . c
3
Installation dans Matlab
La première étape consiste à déposer la bibliothèque précédente à la racine du dossier de MATLAB.
Dans l’exemple ci-dessous nous utilisons /usr/local/matlab-r2010b.
bash> cp my−hostname . s o / u s r / l o c a l / matlab−r2010b
Nous remplaçons le binaire de Matlab par un script qui charge la bibliothèque dynamique et
invoque le binaire d’origine (dans le cas d’une version 32bits, glnxa64 est à remplacer par glnx86 ) :
bash>
bash>
bash>
bash>
cd / u s r / l o c a l / matlab−r2010b / b i n / g l n x a 6 4
mv MATLAB MATLAB. b i n
v i MATLAB
chmod 755 MATLAB
Listing 3: MATLAB
#! / b i n / b a s h
export MY HOSTNAME=‘ hostname −f ‘
export LD PRELOAD=$MATLAB/my−hostname . s o
DNUM=‘echo $DISPLAY | sed −e ’ s / . ∗ : \ ( [ 0 − 9 ] ∗ \ ) . [ 0 − 9 ] / \ 1 / ’ ‘
SHORT=‘ hostname −s ‘
i f xauth l i s t | g r e p −q ” ˆ$MY HOSTNAME\/ unix :$DNUM”
then
echo ”X11 c o o k i e f o r $MY HOSTNAME/ unix :$DNUM a l r e a d y e x i s t i n your .
Xauthority ”
else
XCOOKIE=‘ xauth l i s t | sed −n ” /ˆ$SHORT\/ unix :$DNUM/ s /$SHORT/
$MY HOSTNAME/ p” ‘
xauth add $XCOOKIE
fi
$MATLAB/ b i n / g l n x a 6 4 /MATLAB. b i n $ ∗
xauth remove $MY HOSTNAME/ unix :$DNUM
4
Installation dans Maple
La première étape consiste à déposer la bibliothèque précédente à la racine du dossier de MAPLE.
Dans l’exemple ci-dessous nous utilisons /usr/local/maple-12. Pour fonctionner elle doit avoir été
compilée sur une machine 32bits, même si elle utilisée avec une installation 64bits de Maple.
bash> cp my−hostname . s o / u s r / l o c a l / maple −12
La suite dépend de l’architecture utilisée.
4.1
Version 32bits
Le fichier binaire mserver est renommé en mserver.bin. A la place nous y déposons le script mserver
ci-dessous qui charge la bibliothèque dynamique my-hostname.so avant d’invoquer le binaire original.
bash>
bash>
bash>
bash>
cd / u s r / l o c a l / maple −12/ b i n . X86 INTEL LINUX
mv mserver mserver . b i n
v i mserver
chmod 755 mserver
Listing 4: mserver
#! / b i n / b a s h
export MY HOSTNAME=‘ hostname −f ‘
#e x p o r t LD DEBUG= f i l e s
export LD PRELOAD=$MAPLE/my−hostname . s o
exec $MAPLE/ b i n . IBM INTEL LINUX/ mserver . b i n $ ∗
4.2
Version 64bits
Le fichier binaire mfsd est renommé en mfsd.bin. A la place nous y déposons le script mfsd ci-dessous
qui charge la bibliothèque dynamique my-hostname.so avant d’invoquer le binaire original.
bash>
bash>
bash>
bash>
cd / u s r / l o c a l / maple −12/ b i n . X86 64 LINUX
mv mfsd mfsd . b i n
v i mfsd
chmod 755 mfsd
Listing 5: mfsd
#! / b i n / b a s h
export MY HOSTNAME=‘ hostname −f ‘
#e x p o r t LD DEBUG= f i l e s
export LD PRELOAD=$MAPLE/my−hostname . s o
exec $MAPLE/ b i n . X86 64 LINUX/ mfsd . b i n $ ∗