Quelques outils UNIX
gagnant à être connus


12 août 2025




[#1: Tri d'adresses IP - CIDR Aggregate] [#2: Dashboard - btop]

[#3: Colorisation - grc] [#4: Décoratif - cmatrix & asciiquarium]

[Bonus ! Liens vers quelques webtools intéressants]



#1: CIDR Aggregate, triez et aggrégez des listes d'adresses IP




On commence fort avec une splendide trouvaille que j'ai dénichée sur un forum il y a quelques temps, et qui va s'avérer salvatrice si vous devez manipuler régulièrement des fichiers contenant des adresses IPv4. Il s'agit d'un script shell vous permettant d'aggréger des adresses IP et sous-réseaux, de manière à obtenir une liste sans doublons ni redondance.

Par exemple si votre liste contient 192.168.11.50, 192.168.11.0/25, 192.168.10.0/24, 192.168.11.128/25 et 192.168.10.0/24, ces quatre lignes seront remplacées par l'unique ligne : 192.168.10.0/23, laquelle regroupe les subnets consécutifs et élimine les recouvrements. Pas mal non ?

Bien que je vous le mette
à disposition en téléchargement, je ne résiste pas à vous partager le code du script directement sur cette page :

#!/bin/bash -i
alias d=done e=unset f=printf\ -v g=local h=else i=then j=for k=while C=do E=fi
n(){ g s e i;j i in ${!u[@]};C [ $1 -ge $[i+1] ]&&[ $1 -le $[u[i]+1] ]&&s=$i
[ $2 -ge $[i-1] ]&&[ $2 -le $[u[i]-1] ]&&e=$i;d;if [ "$s" ];i if [ "$e" ];i \
[ $s -ne $e ]&&{ u[s]=${u[e]};e u[e];};h [ $1 -lt $s ]&&{ u[$1]=${u[s]};e u[s
];s=$1;};[ $2 -gt ${u[s]} ]&&u[s]=$2;E;h if [ "$e" ];i [ $1 -lt $e ]&&{ u[$1
]=${u[e]};e u[e];e=$1;};[ $2 -gt ${u[e]} ]&&u[e]=$2;h u[$1]=$2;E;E;};q(){
g s=${1#*/} m=${1%/*} z;[ -z "${s//*.*}" ]&&s=32;y $s z;set -- ${m//./ }
m=$[$1<<24|$2<<16|$3<<8|$4];n $[m&z] $[m|((2**32-1)^z)];};y(){ f $2 "%u" $[ (
2**32-1)^(~0^~0<<(32-$1))];};r(){ f $2 "%s" $[$1>>24].$[$1>>16&255].$[$1>>8&
255].$[$1&255];};t(){ g s z;k [ "$1" ];C s=32;k y $[s-1] z&&[ $1 = $[($1>>(33
-s))<<(33-s)] ]&&[ $2 -ge $[$1|((2**32-1)^z)] ];C ((s--));d;r $1 x;echo $x/$s
y $s z;if [ $2 -gt $[$1|((2**32-1)^z)] ];i set -- $[1+($1|((2**32-1)^z))] $2
h shift 2;E;d;};k read w;C q $w;d;p=-1;j o in ${!u[@]};C [ $o -gt $p ]&&p=${u[
o]}&&t $o ${u[o]};d

Ah oui je vous avais prévenu, c'est une petite merveille ! Là vous vous demandez « mais wtf ?! OMFGBBQ !!?! Ca fonctionne ce truc ?? » Et bien étonnamment, oui ! Cela fonctionne même très bien, je vais vous en faire une petite démonstration.

Pour cela j'ai préparé une petite liste de test que je vais soumettre au script. Celle-ci comprend des adresses et des sous-réseaux qui se recouvrent, et j'ai également tendu quelques pièges au programme, notamment en lui donnant des sous-réseaux non identifiés par leur adresse de début (par exemple 192.168.1.250/16 au lieu de 192.168.0.0/16), le tout dans le désordre.

10.2.5.0/24
192.168.16.0/24
10.2.5.108
192.168.17.0/24
192.168.18.0/24
172.26.120.78
10.4.253.0/24
192.168.19.0/24
192.168.254.254
172.20.80.0/24
10.255.4.8
172.19.64.0/14
10.4.252.0/24
192.168.20.0/24
192.168.254.253
172.26.120.85/28
10.255.255.0/16

Le script attend un sous-réseau par ligne, il lit l'entrée standard, et écrit sur la sortie standard. Ceci le rend donc parfaitement apte à être utilisé dans une ligne de commande unique, ou bien dans un script plus gros.



[Exemple cidr-aggregate.sh]
Résultat produit par le script sur la liste ci-avant


Juste magnifique. Et en plus ça sort tout bien trié, et comme il faut pour des adresses IP (une utilisation de sort sur une liste d'adresses IP placerait 111.x.x.x avant 2.x.x.x notamment, cépataupe).

Vous noterez que le script ajoute le préfixe /32 aux adresses isolées. Cela n'a normalement aucune incidence pour la plupart des utilisations. Mais au cas où cela devrait poser problème avec le logiciel auquel vous destinez la liste traitée par le script, vous pouvez facilement éliminer ce /32 en rajoutant un petit passage par sed comme ceci :
cidr-aggregate.sh < origin-list | sed "s/\/32$//" > destination-list
Le script à télécharger : cidr-aggregate.sh.gz - en archive gzip, ce qui vous évitera d'éventuelles déconvenues si vous le récupérez d'abord sur une machine Windows avant de l'envoyer vers votre serveur UNIX.

Important : ce script utilise bash et non le /bin/sh minimaliste présent sur tous les UNIX. Il vous faudra donc d'abord l'installer, notamment sur les systèmes *BSD. Dans la même idée, vous devrez peut-être modifier la 1ère ligne du script en #!/usr/local/bin/bash -i, ou bien créer un lien symbolique dans /bin vers l'emplacement du binaire de bash (ce que je vous recommande, car cela pourra s'avérer utile si vous téléchargez d'autres scripts sur Internet). N'oubliez pas non plus de copier le script dans un répertoire figurant dans votre variable PATH et de lui attribuer les droits d'exécution (0755).




#2: btop, le dashboard système en mode texte




Je cherchais un programme capable de m'afficher le trafic réseau en temps réel sur mes serveurs, car les WebUI des équipements réseau ne me satisfaisaient pas. Lors de cette recherche j'ai trouvé bien plus.

Je vous présente donc btop un dashboard complet vous permettant non seulement d'observer le trafic réseau, mais aussi le reste de votre système : charge CPU, processus, I/O disques et mémoire. Tout en un, personnalisable (vous pouvez choisir les éléments à afficher) et entièrement en mode texte.



[Capture btop 1] [Capture btop 2]

btop avec deux exemples de thèmes (couleurs) et deux dispositions de panneaux
Vous pouvez cliquer sur les miniatures pour ouvrir une nouvelle fenêtre et voir en taille réelle


Bien qu'il fonctionne dans n'importe quel terminal, tout le dashboard est manipulable à la souris en cliquant sur les labels, et vous pouvez faire défiler le volet des processus à l'aide de la molette. Vous pouvez aussi utilser les raccoucis clavier correspondant aux lettres en couleur de chaque label.

Il y a des packages de ce programme pour Linux, FreeBSD, NetBSD et même macOS, avec homebrew. Ces packages sont founis avec des thèmes pré-installés (une quinzaine), que vous pouvez modifier assez facilement (ce sont des fichiers texte).

La page officielle du projet est
disponible ici.



#3: grc, color my shell!




Ahhh le bon vieux terminal de papa, le vrai VT-100 au clavier minimaliste, qui fait du bruit (quelqu'un ici a quelque chose contre les claviers qui font du bruit ?) et tout plein de bips, avec une rémanence qui rend un défilement bien illisible. :) Ouais OK c'est marrant, c'est très root, mais en vrai la couleur sur les terminaux, ça existe depuis le VT-201... Alors pourquoi devrait-on se contenter de ne colorer que les prompts ?

Heureusement vous allez pouvoir mettre de la couleur dans votre terminal grâce à un petit outil qui mettra en valeur la sortie de la plupart des commandes UNIX standard.

Oui alors je vous vois venir, je sais ce que vous pensez. Vous vous dites « c'est quoi ces histoires de couleurs de PD ? Moi mon terminal il est blanc sur noir, viril, et il a des pwals. A quel moment je le transforme en arc-en-ciel LGBT de mes burnes obliques ? » Bon comme une seule image vaut mille mots (c'est bô ce que j'écris), je vais vous illustrer tout cela (et vous convaincre) avec un petit exemple.

Voici donc ce que vous obtenez avec la commande mount sur un système récent :


[Output mount]


Ah oui ça fait un joli pâté n'est-ce pas ? Et encore, j'utilise un prompt coloré. Si vous n'aimez pas ça (ce que je peux comprendre tout à fait, à l'inverse de ne pas aimer les claviers qui font du bruit), vous allez carrément ne plus savoir où est la première ligne.

Voici maintenant le résultat de mount, colorisé par grc :


[Output mount + grc]


Ah ah ! Je ne vous avais pas menti. Avouez que ça n'a rien à voir, et que vous êtes épaté. Non seulement les différents types de partitions sont parfaitement distinguables, mais qui plus est, la différence entre un élément qui se poursuit par un retour à la ligne, et l'élément suivant, est nettement plus visible.

Hum, on m'indique que pour illustrer mon propos, j'ai utilisé deux images et non une comme je l'avais écrit avec ma phrase philosophique de coin de comptoir. Oui en effet. Mais j'ai aussi probalement écrit plus de mille mots sur cette page, donc stop râler ça passe, épicétou.

Vous avez le support d'un grand nombre de commandes colorisables avec grc, telles que ps, ping, ifconfig, traceroute, netstat, ... Vous pouvez même coloriser les logs de votre serveur, par exemple en lançant dans un terminal :
grc tail -n 100 -f /var/log/syslog
Le programme dispose de packages pour Linux et FreeBSD mais il s'agit d'un script python que vous pouvez assez facilement installer sur n'importe quel système. Pour cela, rendez-vous sur
la page officielle du projet sur GitHub, ou bien vous pouvez aussi récupérer l'archive que je vous ai moi-même préparée. Elle comprend la documentation pour l'installation.

Je l'ai installé comme cela sur NetBSD, GNU Hurd et Solaris. J'ai même pu l'installer sur des équipements embarqués utilisant un shell UNIX, pour peu que python y soit disponible - ce qui est presque tout le temps le cas des équipements qui disposent d'une WebUI.



#4: cmatrix et asciiquarium, inutiles donc indispensables !




Le travail c'est bien, et même si la rigôlad ce n'est pas mieux (restons sérieux), un petit programme pour agrémenter son terminal, c'est comme lire des bêtises sur Internet venues de
sites douteux : ça fait parfois du bien !

Voici donc cmatrix qui reproduira les fameux écrans d'analyse de la Matrice des opérateurs dans les vaisseaux du monde réel. Le programme est aussi vieux que les films, mais probablement oublié depuis car à l'époque, il consommait beaucoup de ressources CPU (c'est d'ailleurs toujours écrit dans la manpage). Ce n'est bien sûr plus un souci avec une machine moderne, si bien que vous pouvez le faire tourner non-stop sans problèmes aujourd'hui.



[Capture cmatrix 1] [Capture cmatrix 2]

cmatrix avec différents paramètres
Cliquez sur les miniatures pour voir en pleine fenêtre


Si vous utilisez tmux (ce que je vous recommande), vous pouvez faire quelques setups rigolos. Dans les trois terminaux de la seconde capture, les commandes lancées sont, de gauche à droite :
cmatrix -a -b -C cyan
cmatrix -a -b -C magenta
cmatrix -a -b -C yellow
Le logiciel est surtout disponible pour Linux. Je n'ai malheureusement pas vu de package pour les systèmes *BSD.



Mais pour les utilisateurs de ces systèmes, ne vous inquiétez pas, j'ai pour vous de quoi faire rager ceux qui ne jurent que par Linux : asciiquarium !

Cet outil simule un économiseur d'écran d'un des thèmes les plus célèbres, celui de l'aquarium virtuel. Entièrement en mode texte, à lancer directement dans un terminal par la commande : asciiquarium



[Capture asciiquarium]

asciiquarium dans un terminal
Cliquez sur les miniatures pour voir en pleine fenêtre


Le programme est très léger, et consomme encore moins de CPU que cmatrix.

Si vous le laissez tourner sur un écran secondaire au bureau, nul doute que cela va attirer des collègues curieux. Ce peut être une excellente occasion d'engager une conversation avec la développeuse pulpeuse de type bonnasse de l'open-space voisin. A tous les coups, elle va trouver ça « trop pipou. » Bon espérez juste que le requin qui passe de temps en temps dans l'aquarium virtuel ne décide pas de se pointer à ce moment-là, car il dévore les poissons et laisse une traînée de sang derrière lui. Ha ha ha !

Il y a un package pour FreeBSD et NetBSD du programme, mais étrangement pas sous Debian Linux. Bon vu qu'il est écrit en perl, je pense que ce n'est pas extrêmement difficile à porter.

Et pour finir... Cadeaux bonus !

Renouons avec une vieille tradition de mon site : la liste de liens ! Vous trouverez ici quelques pointeurs vers quelques webtools bien pratiques.

Série « les guides de La Revue »
- Les autres articles sur ce thème -

[Un terminal au top avec tmux !] [GNU Hurd : est-ce que ça marche ? Peut-on l'installer ?]

[Mise en place rapide d'un relais Tor] Quelques outils UNIX gagnant à être connus

La Revue de TheRaphit.com

[Compteur]
Nombre de visiteurs
depuis le 13 mai 1997.


[Article précédent]

[Accueil] Dernier article [Les archives]

TheRaphit's Web Site - La dernière homepage du Web


[(Tout)2 Evangelion] Webzine : La Revue [Manga Pink Zone] [Mathématiques]

[Nouveautés] [Zone de téléchargement]


Site créé le 16 janvier 1997
©1997-2025 by TheRaphit

www.theraphit.com