Comparatif de quelques testeurs de vérification réseaux

Dans cet article nous allons comparer les fonctionnalités de 4 testeurs de vérification de cablage que l’on peut trouver à prix abordables. En effet, même dans le cadre d’une utilisation ponctuelle il est toujours utile de pouvoir accéder à d’autres fonctionnalités que ce que proposent les testeurs à led simples que l’on peut trouver dans les starter-kits de sertissages sans toutefois avoir à dépenser plusieurs centaines (voire milliers) d’euros dans des testeurs haut de gamme.

Les produits testés :

testeurs reseaux

Parmi les produits testés, nous allons comparer le Fluke Microscanner Pro, qui reste une référence, et que l’on trouve facilement sur le marché de l’occasion maintenant pour moins de 200€ avec un embout de test. Nous testerons également le Scout Pro 3 de chez Klein Tools, le NF-8601W et SC8108 qui sont deux testeurs « noname » que l’on retrouve très souvent sur internet sous différentes appellations ou marques. Le prix neufs de ces trois testeurs est de moins de 100€.

Alimentation :

Seul le NF-8601W fonctionne avec une batterie interne rechargeable par USB, les trois autres testeurs fonctionnent à pile. A noter que la batterie du NF-8601 se décharge dans le temps en cas de non utilisation prolongée de l’appareil.

Interface :

Le Microscanner Pro propose principalement un bouton « Mode » permettant d’afficher successivement les différents modes de fonctionnement (cartographie, longueur, …) et deux flèches permettant de naviguer au sein de chaque mode.

Le SC8108 affiche les différentes options sur plusieurs lignes et possèdes deux flèches permettant de changer de sélection et un bouton pour valider.

L’interface du NF-8601W est la plus accessible de toutes. L’affichage est en couleurs et il suffit de naviguer entre les icones avec les 4 flèches et de valider avec la touche OK.

Le Scout Pro 3 est la plus complexe a prendre en main car il y a une différenciation appui court / appui long sur certaines touches qui permettent d’activer des fonctions différentes. Ici, il faut effectuer un appui de la bonne durée sur la bonne touche pour activer une fonction. Il n’y a ni menu ni navigation.

Tests du schéma de câblage (wiremap) :

Dans ce premier test, nous allons vérifier 4 câbles (20m, 10m, 5m, 30cm) dont nous savons qu’ils ne présentent pas de défaut et dont le schéma câblage est correct avec chacun des testeurs.
Les câbles sont détectés comme correctement câblés par le Microscanner Pro, le Scout Pro 3 et le SC8108.
En revanche, le  NF-8601W validera les câbles de 20m,10m et 5m. Lors du test du cable de 30cm, à la première mesure, il indiquera des inversions de paires. A la seconde mesure, il indiquera d’autre paires inversées. Une troisième et une quatrième mesure indiqueront que le câble est OK. Ce fonctionnement aléatoire n’a été remarqué que sur des très petits câbles. Je ne sais pas si c’est un dysfonctionnement spécifique de cet appareil ou si le même problème est constaté sur d’autres appareils similaires.

A noter que seuls le Microscanner Pro et le Scout Pro 3 détectent le blindage des câbles, ce qui est étonnant car on trouve sur internet des captures d’écran de NF-8601 affichant un ‘G’. Sur mon appareil, aucun blindage n’aura été détecté. La version du firmware du testeur est la 0.2.9 mais il semble qu’il n’est pas prévu de pouvoir le mettre à jour par la suite.

Simulation de pannes :

Pour le premier test, nous allons tester un câble de 5m dont les conducteurs 5 et 6 sont inversés. Tous les testeurs détectent le défaut et indiquent précisément quel est le problème rencontré.

Pour le second test, le conducteur 8 est coupé sur un câble de 5m.  Ici encore tous les testeurs détectent précisément le défaut rencontré.

Dans le troisième test effectué, les paires 7 et 8 sont en court-circuit sur un câble de 5m. Tous les testeurs détectent le court-circuit et affichent quelles sont les paires concernées.

Pour la dernière panne simulée, un câble de 10m est correctement câblé aux deux extrémités. Au milieu de ce câble, le conducteur 1 est blessé et est en contact avec la tresse.  Seuls le Microscanner Pro et le Scout Pro 3 ont détecté ce défaut. Cela était prévisible car ce sont les deux seuls testeurs qui avaient détecté le blindage des câbles lors des tests de wiremap sur des câbles en bon état.

Mesure de câble :

Le Microscanner Pro et le Scout Pro 3 permettent d’ajuster une variable pour calibrer la mesure d’un câble (nvp pour le Microscanner Pro et constante le longueur pF/pi pour le Scout Pro 3). Pour ces tests, les valeurs usines ont été utilisées. A noter le Scout Pro 3 n’affiche que des valeurs entières de longueur. Les mesures sont donc toujours arrondies à l’entier le plus proche.

Le SC8108 permet d’étalonner le système de mesure en effectuant de calibration dynamiques depuis un câble de longueur connue. Cependant, la calibration n’est pas sauvegardé et est à refaire à chaque allumage de l’appareil.

Le NF-8601W permet d’établir des profils de calibrations en étalonnant différent de câbles de longueurs connues et de charger un profil enregistré manuellement avant d’effectuer la mesure. A noter que seule la longueur du câble ayant servit a effectuer la calibration apparait dans l’entête du profil. Il n’est donc pas possibles d’établir différents profils en fonctions des marques de câbles.

Pour ces deux testeurs, une calibration a été effectuée sur un câble de 25m, les réglages d’usines donnant des résultats grossiers.

Mesure d’un câble de 20m :

Le microscanner pro mesure 19,7m, le Scout Pro 3 20m, le  SC8108 22m et le NF-8601 19.7m.

Mesure d’un câble de 5m :

Le microscanner pro mesure 4.9m, le Scout Pro 3 5m, le  SC8108 5.3m et le NF-8601 5.1m.

Mesure d’un câble de 2m :

Le microscanner pro mesure 2m, le Scout Pro 3 2m, le  SC8108 2.4m et le NF-8601 1.6m.

Mesure d’un câble de 50cm :

Le microscanner pro mesure 0.4m, le Scout Pro 3 0m, le  SC8108 0.6m et le NF-8601 0.6m.

Etant donné que le Scout Pro 3 n’affiche que des valeurs entières, il est logique qu’il affiche une valeur de 0. Si on passe l’appareil en pieds plutôt qu’en mêtres, il trouve une valeur de 2 ft, soit 0.6m

Localisation de défaut :

Un câble de 9m75 a les conducteurs 1 2 3 6 coupés à 6m50. La fonction de mesures de longueur paire par paire va servir à déterminer l’endroit du défaut.

Le microscanner mesure un câble de 9m80 et positionne le défaut à 7.1m. Le SC8108 mesure un câble de 10m50 et situe le défaut à 5.9m.
Le NF-8601W mesure un câble de 9m50 et positionne le défaut à 7m70. Enfin le Scout pro 3 mesure un câble de 10m et situe le défaut à 8m.
A noter que si l’on passe le Scout Pro 3 en ft, il positionne le défaut à 25ft (7.62m) et mesure le cable à 33ft (10.05m). La mesure est donc plus précise en ft qu’en mètre.

Repérage grâce à une sonde de tonalité :

Ici, seuls le Scout Pro 3 et le NF-8601W seront testés. Le Microscanner Pro peut également fonctionner avec une sonde optionnelle mais je n’ai pas pu faire de tests.

La sonde du NF-8601W fonctionne  avec une batterie intégrée tandis que celle du Scout Pro 3 (vendue séparément) fonctionne à piles. Cette dernière permet également d’être reliée à des écouteur audios pour pouvoir être utilisée dans des environnements bruyants. Afin de faciliter le repérage le Scout Pro 3 permet de faire varier la fréquence de la tonalité et de sélectionner les paires sur lesquelles émettre.

Repérage au sein d’une même armoire de brassage :

Le câble à repérer mesure 5m, il est noyé au milieu d’autres câbles. Il est connecté à l’une de ses extrémité à un switch. Les deux sondes ont permis de repérer facilement le câble. Les deux sondes fonctionnent différemment. Celle du NF-8601W a un fonctionnement plutôt de type « tout ou rien » (soit ca sonne, soit ça ne sonne pas) tandis que celle du Scout Pro 3 a un fonctionnement plus « analogique » (le niveau de la tonalité monte quand on se rapproche du bon câble et on entend un faible bruit blanc en fond sonore).

Repérage au sein d’une installation :

Le câble à repérer mesure 30m. D’un côté il est connecté à une prise murale, de l’autre il est connecté à un switch via un panneau et un cordon de brassage.
La sonde du NF-8601W permet un repérage facile au niveau du panneau de brassage. En revanche, celle du Scout Pro 3 n’a pas permis de repérer le câble.

Conclusion :

Le Microscanner Pro a été et reste une référence malgré son âge. Simple d’utilisation, il est fiable à la fois dans les tests et dans les distances mesurées. En revanche, il ne propose pas de fonctions POE et l’adapteur pour des câbles coaxiaux n’est pas fourni dans le kit de base.

Le Scout Pro 3 est fiable dans les tests. Concernant la mesure de distance, il affiche des résultats cohérents directement en utilisant les préréglages d’usine. Il faut seulement avoir à l’esprit qu’il n’affichera que des valeurs entières arrondies, ce qui peut avoir un impact lors de la localisation de défauts. En passant l’unité de mesure en ft, la mesure est plus précise (ca n’aurait guère couté plus cher de faire une conversion en mètre digne de ce nom pourtant). D’origine, il permet également de tester les câbles coaxiaux, RJ11/RJ12, de faire clignotement de port de switch, mesure de tension POE, type de cablage POE.  En revanche l’utilisation est la moins intuitive et la sonde de tonalité est d’une efficacité très moyenne.

Le NF-8601W semblait prometteur. Non seulement il permet tout un tas d’autres fonctionnalités (clignotement de port de switch, test de tension POE, ping, …) mais, de surcroit, sa sonde de tonalité fonctionne vraiment très bien. Correctement étalonné, les mesures de distances sont acceptables.
Il est fourni avec 8 embouts de repérage RJ45/BNC/RJ11. Certains de ces embouts affichent une erreur « unordered map » lorsque l’on cartographie un câble avec (il existe une vidéo youtube sur le sujet mais celle-ci n’a pas permis de résoudre le problème rencontré). De plus, les faux-positifs rencontrés lors de vérifications de schémas de câblage  de très petits câbles font apparaitre un manque de fiabilité. Encore une fois, je ne sais pas si les problèmes rencontrés concernent uniquement cet appareil ou si bon nombre d’appareils sont concernés (le fait qu’une vidéo existe sur le problème « unordered map » me laisse supposer que cela n’est pas spécifique à mon appareil). A noter que l’appareil testé ici ne comporte pas la marque « Noyafa » en haut à gauche de l’écran. Peut-être que les modèles estampillés Noyafa sont plus fiables …

Le SC8108 est un testeur d’entrée de gamme. Il détectera les problèmes de câblage les plus courants et apporte un petit plus par rapport aux testeurs basiques à LED en indiquant le type de problème rencontré mais il ne faut pas lui en demander plus. Peut convenir ponctuellement pour des petits besoins. Il permet à priori de tester des câbles téléphoniques et coaxiaux mais la terminaison fournie dans le pack ne propose qu’une prise RJ45. Son gros avantage d’avoir un prix moitié moindre par rapport aux autres testeurs.

Ainsi, si l’on suppose que ce que l’on recherche avant tout est la fiabilité du test, le Fluke Microscanner Pro et le Klein Tools Scout Pro 3 se distinguent très nettement des deux autres. Fiables, ils sont les seuls à avoir détectés des défaut entre conducteurs et blindage.

Même si le Microscanner Pro est légèrement plus précis dans les mesures de distances, l’ensemble des fonctionnalités proposé fournies par le Klein Tools Scout Pro 3 (notamment le fait de pouvoir travailler avec des équipement POE) fait de lui un concurrent sérieux.

 

 

Plusieurs instances Wapt sur un même serveur

Cet article est une sorte de PoC démontrant la possibilité d’héberger plusieurs instance de Wapt sur un même serveur.
Nous ferons dans cet article une maquette avec deux instances mais il est possible de l’adapter pour augmenter le nombre d’instances.
Wapt est un logiciel de déploiement, de mise à jour et de suppression automatisé de paquetages pour Windows edité par TranquilIT.
Wapt existe en deux versions, enterprise et community. Dans cette article nous aborderons uniquement la version community.

Nous installerons deux instances de wapt nommées wapt-dev et wapt-prod.

Pour arriver à nos fins, nous utiliserons le container docker que j’ai mis à disposition sur le docker hub. Pour simplifier la compréhension de ce PoC, le serveur nginx sera installé directement sur l’hôte et non pas dans un container.

Prérequis :

Nous utiliserons un serveur installé en version minimale de Centos 7
Le serveur doit bien évidemment posséder suffisamment de ram, d’espace disque et de puissance cpu pour supporter l’exécution de deux containers.
Deux enregistrements dns font pointer wapt-dev.be-root.com et wapt-prod.be-root.com sur l’adresse IP de notre serveur.

Configuration initiale du système :

Tout d’abord, nous configurons le firewall :

systemctl enable firewalld --now
firewall-cmd --permanent --add-service http
firewall-cmd --permanent --add-service https

et nous désactivons SELinux :

sed -i 's/enforcing/disabled/g' /etc/selinux/config /etc/selinux/config && setenforce 0

Initialisation des containers

Nous allons maintenant installer Docker et Docker-compose :

yum install -y yum-utils wget
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker && systemctl enable docker
wget https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64 -O /usr/local/bin/docker-compose && chmod +x  /usr/local/bin/docker-compose && rehash

Nous allons créer l’environnement nécessaire lancer les containers ainsi que monter les volumes :

mkdir -p /opt/wapt/compose
mkdir -p /opt/wapt/wapt-prod/nginx /opt/wapt/wapt-prod/html /opt/wapt/wapt-prod/ssl
mkdir -p /opt/wapt/wapt-dev/nginx /opt/wapt/wapt-dev/html /opt/wapt/wapt-dev/ssl

Éditons (et créons) le fichier /opt/wapt/compose/docker-compose.yml :

version: '3'
services:
  wapt-dev:
    image: clamy54/wapt-ce:latest
    hostname: wapt-dev.be-root.com
    container_name: wapt-dev
    privileged: true
    ports:
      - "10080:8080"
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
      - /opt/wapt/wapt-dev/nginx:/etc/nginx
      - /opt/wapt/wapt-dev/html:/var/www/html
      - /opt/wapt/wapt-dev/ssl:/opt/wapt/waptserver/ssl
    environment:
      - DISABLE_NGINX=1
      - WAPT_ADMIN_PASSWORD=passdev

  wapt-prod:
    image: clamy54/wapt-ce:latest
    hostname: wapt-prod.be-root.com
    container_name: wapt-prod
    privileged: true
    ports:
      - "11080:8080"
    volumes:
      - /sys/fs/cgroup:/sys/fs/cgroup:ro
      - /opt/wapt/wapt-prod/nginx:/etc/nginx
      - /opt/wapt/wapt-prod/ssl:/opt/wapt/waptserver/ssl
      - /opt/wapt/wapt-prod/html:/var/www/html
    environment:
      - DISABLE_NGINX=1
      - WAPT_ADMIN_PASSWORD=passprod

Attention, nous sommes en présence d’un fichier au formal Yaml. L’indentation est donc fondamentale.
La variable d’environnement DISABLE_NGINX=1 permet de désactiver nginx dans le container car nous utiliserons un service nginx commun en frontal directement sur l’hôte.
Cette variable permet également de faire écouter le daemon waptserver sur tous les ports et non pas seulement sur le localhost.
La variable d’environnement WAPT_ADMIN_PASSWORD permet de fixer le mot de passe admin de l’instance wapt. Le port 8080 du container wapt-prod sera mappé sur le port 11080 de l’hôte
et le port 8080 du container wapt-dev sera mappé sur le port 10080 de l’hôte.

Nous pouvons ainsi démarrer les containers :

cd /opt/wapt/compose
docker-compose up -d

Installation du frontal nginx

Pour des raisons de cohérence et de droits d’accès aux fichiers, nous allons faire en sorte que l’utilisateur nginx ait les mêmes uid/gid que l’utilisateur nginx à l’intérieur des containers (qui est forcé lors de l’initialisation de ces derniers).

groupadd -g 8080 nginx && useradd -d /var/lib/nginx -g nginx -G nginx -u 8080 -s /sbin/nologin -m nginx && passwd -l nginx

Nous allons maintenant installer nginx :

yum install -y epel-release
yum install -y nginx

Grace aux volumes montés sur l’hôte, nous pouvons ainsi configurer facilement nginx.
Nous allons d’abord copier le fichier nginx.conf depuis l’un des container :

cp /opt/wapt/wapt-prod/nginx/nginx.conf /etc/nginx/

Nous allons ensuite créer un fichier /etc/nginx/conf.d/wapt-prod.conf inspiré du fichier /opt/wapt/wapt-prod/nginx/conf.d/wapt.conf et en y adaptant certains paramètres.

server {
    listen                      80;
    listen                      443 ssl;
    server_name                 wapt-prod.be-root.com;

    ssl_certificate             "/opt/wapt/wapt-prod/ssl/cert.pem";
    ssl_certificate_key         "/opt/wapt/wapt-prod/ssl/key.pem";
    ssl_protocols               TLSv1.2;
    ssl_dhparam                 /opt/wapt/wapt-prod/ssl/dhparam.pem;
    ssl_prefer_server_ciphers   on;
    ssl_ciphers                 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_stapling                on;
    ssl_stapling_verify         on;
    ssl_session_cache           none;
    ssl_session_tickets         off;


    #ssl_client_certificate "/opt/wapt/conf/ca-wapt-prod.be-root.com.crt";
    #ssl_crl "None";
    #ssl_verify_client optional;


    gzip_min_length     1000;
    gzip_buffers        4 8k;
    gzip_http_version   1.0;
    gzip_disable        "msie6";
    gzip_types          text/plain text/css application/json;
    gzip_vary           on;

    index index.html;


    location / {
        add_header Cache-Control "store, no-cache, must-revalidate, post-check=0, pre-check=0";
        add_header Pragma "no-cache";
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # be sure these headers are not forwarded
        proxy_set_header X-Ssl-Client-Dn  "";
        proxy_set_header X-Ssl-Authenticated  "";

        client_max_body_size 4096m;
        client_body_timeout 1800;

        location /static {
            alias "/opt/wapt/wapt-prod/html/static";
        }


        location /ssl {
            alias "/opt/wapt/wapt-prod/html/ssl";
        }


        location ~ ^/(wapt/waptsetup-tis.exe|wapt/waptagent.exe|wapt/waptdeploy.exe|sync.json)$ {
            root "/opt/wapt/wapt-prod/html";
        }

        location ~ ^/(wapt/.*|wapt-host/.*|waptwua/.*|wapt-diff-repos/.*)$ {

            root "/opt/wapt/wapt-prod/html";
        }

        location / {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            client_max_body_size 4096m;
            client_body_timeout 1800;


            location /add_host_kerberos {
                return 403;
            }


            location /wapt-host/Packages {
                    return 403;
            }

            location / {

                add_header X-Forwarded-List $http_x_forwarded_for;
                add_header X-Remote-IP $remote_addr;
                proxy_pass http://127.0.0.1:11080;
            }

            location /socket.io {
                proxy_http_version 1.1;
                proxy_buffering off;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_pass http://127.0.0.1:11080/socket.io;
            }
        }
    }
}

Les paramêtres à adapter par rapport au fichier initial présent dans le volume sont les chemins des aliases, le server_name correspondant au vhost, les ports référencés dans les paramètres proxy_pass et les chemins des certificats ssl.

De la même façon, nous pouvons créer un fichier /etc/nginx/conf.d/wapt-dev.conf inspiré du fichier /opt/wapt/wapt-dev/nginx/conf.d/wapt.conf :

server {
    listen                      80;
    listen                      443 ssl;
    server_name                 wapt-dev.be-root.com;

    ssl_certificate             "/opt/wapt/wapt-dev/ssl/cert.pem";
    ssl_certificate_key         "/opt/wapt/wapt-dev/ssl/key.pem";
    ssl_protocols               TLSv1.2;
    ssl_dhparam                 /opt/wapt/wapt-dev/ssl/dhparam.pem;
    ssl_prefer_server_ciphers   on;
    ssl_ciphers                 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_stapling                on;
    ssl_stapling_verify         on;
    ssl_session_cache           none;
    ssl_session_tickets         off;


    #ssl_client_certificate "/opt/wapt/conf/ca-wapt-dev.be-root.com.crt";
    #ssl_crl "None";
    #ssl_verify_client optional;


    gzip_min_length     1000;
    gzip_buffers        4 8k;
    gzip_http_version   1.0;
    gzip_disable        "msie6";
    gzip_types          text/plain text/css application/json;
    gzip_vary           on;

    index index.html;


    location / {
        add_header Cache-Control "store, no-cache, must-revalidate, post-check=0, pre-check=0";
        add_header Pragma "no-cache";
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # be sure these headers are not forwarded
        proxy_set_header X-Ssl-Client-Dn  "";
        proxy_set_header X-Ssl-Authenticated  "";

        client_max_body_size 4096m;
        client_body_timeout 1800;

        location /static {
            alias "/opt/wapt/wapt-dev/html/static";
        }


        location /ssl {
            alias "/opt/wapt/wapt-dev/html/ssl";
        }


        location ~ ^/(wapt/waptsetup-tis.exe|wapt/waptagent.exe|wapt/waptdeploy.exe|sync.json)$ {
            root "/opt/wapt/wapt-dev/html";
        }

        location ~ ^/(wapt/.*|wapt-host/.*|waptwua/.*|wapt-diff-repos/.*)$ {

            root "/opt/wapt/wapt-dev/html";
        }

        location / {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            client_max_body_size 4096m;
            client_body_timeout 1800;


            location /add_host_kerberos {
                return 403;
            }


            location /wapt-host/Packages {
                    return 403;
            }

            location / {

                add_header X-Forwarded-List $http_x_forwarded_for;
                add_header X-Remote-IP $remote_addr;
                proxy_pass http://127.0.0.1:10080;
            }

            location /socket.io {
                proxy_http_version 1.1;
                proxy_buffering off;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_pass http://127.0.0.1:10080/socket.io;
            }
        }
    }
}

Nous pouvons ensuite lancer nginx :

systemctl enable nginx --now

En conclusion

Nos deux containers tournent et exposent le service waptserver sur les ports 10080 et 11080 de l’hôte.
Le serveur nginx installé sur l’hôte sera reverse proxy pour ces deux services grâce à des vhosts basés sur le nom.
Grace aux volumes docker montés sur l’hôte, le serveur nginx sera également capable de servir l’ensemble des pages et binaires.
Bien évidemment d’autres possibilités ou implémentations sont possibles (par exemple restreindre l’accès à un vhost, nginx en container, automatiser la génération de la configuration nginx, etc …). Déployer un container supplémentaire est facile et rapide : il suffit de créer l’arborescence pour les volumes, d’ajouter une instance au fichier docker-compose et une fois le container lancé, de générer un nouveau vhost nginx en fonction des fichiers de configurations présent dans les volumes montés de l’instance.

Pour accéder à nos instances wapt, il suffit maintenant de lancer depuis une machine Windows la console wapt. Dans « serveur » renseigner le nom de l’instance désirée (wapt-prod.be-root.com ou wapt-dev.be-root.com), de mettre admin en tant que nom d’utilisateur et de renseigner le mot de passe correpondant à l’instance (passprod ou passdev).

fenetre de connexion wapt

A la découverte du Z Shell ….

La plupart des distributions utilise bash comme shell par défaut pour les utilisateurs.
Pourtant il existe d’autres shells et nous allons, dans cette article, découvrir le Z-shell aussi appelé zsh.

Installation :

La distribution utilisée ici est LinuxMint 18 mais, hormis l’installation de zsh, le reste devrait être transposable
à n’importe quelle distribution.

Tout d’abord, il faut installer le paquet zsh :

sudo apt-get install zsh zsh-common

Ensuite, pour changer le shell par défaut de l’utilisateur courant :

chsh -s /usr/bin/zsh

Puis créer un fichier de configuration initial en editant ~/.zshrc :

autoload -Uz compinit
compinit

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
setopt correctall
autoload -U promptinit
promptinit

bindkey -e
zle -N edit-command-line
bindkey '^xe' edit-command-line
bindkey '^x^e' edit-command-line

HISTSIZE=1000000
SAVEHIST=1000000
HISTFILE="$HOME/.history"
setopt HIST_VERIFY
setopt SHARE_HISTORY
setopt APPEND_HISTORY 
setopt INC_APPEND_HISTORY SHARE_HISTORY  
setopt HIST_IGNORE_ALL_DUPS  
setopt HIST_REDUCE_BLANKS

Quelques fonctionnalités :

Parmi les fonctionnalités qu’offre zsh, vous pouvez éditer facilement le contenu de variables d’environnement avec la commande vared. Par exemple :

vared PATH

La complétion est également très poussée. Par exemple, si vous tapez :

cd /v/log/a

et que vous pressez ensuite la touche tab, zsh var compléter la commande en :

cd /var/log/apt

La complétion fonctionne également à partir de sous-chaines. Par exemple, si vous tapez :

cd urea

suivi d’un appui sur TAB, zsh va compléter en :

cd Bureau

La complétion fonctionne également pour certaines commandes. Par exemple si vous tapez :

kill 

zsh va vous lister les noms des processus et les PID associés.

A noter que si vous exécutez plusieurs sessions zsh simultanément, l’historique des commandes est partagé entre les sessions. Plus besoin donc de savoir dans quel terminal vous avez tapé telle ou telle commande.

zsh permet également de faire du récursif dans les répertoires à l’aide de **. Par exemple la commande :

ls **/toto

va afficher tous les fichiers toto présents dans le répertoire courant et ses sous-répertoires.

Une autre fonctionnalité intéressante est de pouvoir éditer la ligne de commande en cours dans l’éditeur défini par la variable $EDITOR. Pour ceci, il suffit simplement de presser Ctrl+X suivi de Ctrl+E.

Z-Shell permet de créer des aliases suffixes. Par exemple, en insérant dans le .zshrc la ligne :

alias -s log="less -MN"

Ainsi, sous le shell, lorsque vous taperez le nom d’un fichier .log, zsh l’affichera à l’aide de la commande less -MN

 

Encore plus de personnalisation !

 
Nous allons maintenant installer Oh My Zsh qui est un framework permettant d’aller encore plus loin dans la personnalisation de zsh

L’installation se fait de la manière suivante :

sudo apt-get install curl git
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

L’installation de Oh My Zsh remplace votre .zshrc qui sera renommé en .zshrc.pre-oh-my-zsh

Nous allons maintenant installer le thème powerlevel9k.

Nous allons installer la police inconsolota-awesome. Tout d’abord il nous faut la télécharger :

wget https://github.com/gabrielelana/awesome-terminal-fonts/raw/patching-strategy/patched/Inconsolata%2BAwesome.ttf

Pour l’installer, il suffit d’ouvrir un explorateur de fichier et de cliquer sur le fichier .ttf puis de cliquer sur le bouton installer.

Nous pouvons ensuite installer le thème :

git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k

Puis de modifier notre .zshrc :

POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(os_icon dir vcs)
POWERLEVEL9K_MODE='awesome-patched'
ZSH_THEME="powerlevel9k/powerlevel9k"

Il faut aussi penser à modifier la police utilisée dans le terminal par l’inconsolata awesome medium installée précédemment :

Pour appliquer les modifications, il suffit soit de fermer et réouvrir le terminal, soit de faire un source .zshrc

Nous avons alors le thème powerlevel9k appliqué à zsh ainsi que les extensions fournies par Oh My Zsh :

Dans cet exemple un double appui sur la touche Tab lors d’une complétion de commande permet de naviguer et de sélectionner de manière visuelle le répertoire mdm.
Autre exemple, si vous tapez cd suivi d’appuis sur la fleche du haut, vous naviguerez dans l’historique de toutes les commandes cd qui auront été tapées auparavant.