Pipelining : les sites dans les fichiers de votre distribution Linux
Je viens d’achever une formation de 3 jours à l’administration des systèmes Linux à Caen. Je voulais hier illustrer le pipelining, avec Laurent. Cette technique singulière consiste, sur une même ligne à exécuter une commande avec le résultat de la commande précédente, en les séparant avec un pipe |. Cette technique présente dans les shells Unix / Linux et notamment le Bash a été reprise dans les commandes de l’interpréteur Dos, Windows et maintenant dans le PowerShell.
Extraction des urls présentes dans les fichiers texte de votre distribution Linux
Il faut d’abord effectuer la recherche de fichiers par find :
find / -type f ...
Ensuite, nous devons déterminer s’il s’agit de fichiers textes en passant le nom de fichier à la commande file via xargs :
... | xargs file ...
Puis, nous sélectionnons les seuls fichiers textes avec grep :
... | grep text ...
Nous prenons le nom de fichier situé devant le séparateur qui se trouve être le point-virgule. Nous prenons la 1ère colonne avec la commande cut :
... | cut -d ':' -f 1 ...
Avec la commande sed, nous extrayons les urls :
... |xargs sed -r 's|^.*(https?://[^/\*\[@", ]+).*$|\1|p;g;d' ...
Nous procédons ensuite au tri, en retirant au passage les doublons avec sort :
... | sort -u ...
Pour rediriger cette commande dans un fichier texte, il suffit de préciser à la fin de la commande :
... > /home/urls.txt
Ce qui donne à la fin, sur une ligne :
find / -type f|xargs file|grep text|cut -d ':' -f 1|xargs sed -r 's|^.*(https?://[^/\*\[@", ]+).*$|\1|p;g;d'|sort -u > /home/urls.txt
Votre exercice
Votre exercice consiste à extraire désormais tous les mails présents dans les fichiers de votre distribution Linux. A vous de jouer !