Décryptage d’une commande « compliquée » sous Linux

Twitter Facebook Google Plus Linkedin email
closeCet article a été publié il y a 5 ans 14 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées, les commandes ne sont peut-être plus valides.

Le shell est un outil très puissant, mais qui fait peur, parce qu’il parait souvent très compliqué. Aujourd’hui, je vous propose de faire un pas à pas pour comprendre comment tout ça fonctionne, pour ne plus avoir peur.

Histoire de voir à quoi nous avons affaire, voici sans plus de préambule la commande kifépeur :

J’ai pondu ça en cherchant à récupérer le lien direct des vidéos sur le site Jeuxvideo.com, puisqu’ils ne sont plus disponibles depuis la refonte du site (ils étaient à destination des Mac’eux, qui n’ont pas l’horreur Flash). $pagelink contient donc un lien vers une des pages du site, qui contient la vidéo convoitée, comme cette page par exemple.

Rappel sur le pipe : non j’ai pas fait d’erreur, le pipe, c’est le nom qu’on donne au « | ». Son utilité, renvoyer le résultat d’une commande à une autre commande. Notre ligne d’exemple est ainsi un enchaînement de commandes qui chacune travaille avec le résultat de la précédente.

Voyons donc chaque étape, en commençant par le début, celle du téléchargement de la page :

Le résultat est simple, on voit le code html, dont voici un extrait :

Ce résultat est ensuite envoyé à cette partie :

grep est un outil pour vous retourner les lignes d’un fichier (ou ici, du résultat du wget), ici on cherche les lignes dans lesquelles se trouve le « mot » « .mp4 » :

Yes, une seule ligne ! On la passe ensuite à la moulinette de la partie suivante :

cut est un utilitaire qui, comme son nom l’indique dans la langue de Shakespeare, découpe la chaîne qu’on lui donne en morceaux suivant un séparateur, ici le « , et on lui dit de renvoyer le f-ième morceau :

On approche du but, ceci dit comme j’ai pas un débit de malade, je ne cherche pas le lien de la vidéo en Full HD, mais en 720p. Par chance, il suffit de remplacer le 1080p au bout du lien par 720p, et c’est sed qui s’en charge :

En gros, remplacer « 1080p » par « 720p ». Pourquoi mettre le « p » à la fin ? Pour éviter de remplacer aussi video1080 par video720 au début du lien, au risque de rencontrer des erreurs :

Et voilà, j’ai mon lien final 🙂

Pour l’histoire, j’utilise ce lien ensuite pour télécharger la vidéo avec wget, appelé soit seul soit avec trickle. Ça vous parle ? C’est normal, j’en ai parlé de l’article sur le contrôle de vitesse de téléchargement. Sinon, Jeuxvideo.com fait partie des sites supportés par youtube-dl, mais j’ai découvert ça après avoir codé mon truc 😛

Des possibilités infinies

On le voit, au final, on a mis bout à bout plusieurs outils qui ne font chacun qu’une seule chose, mais qui le font bien. Imaginez que les commandes sont des blocs Lego différents, et pensez (ou cherchez sur le Web) à toutes les créations plus hallucinantes les unes que les autres que sont capables de créer les gens qui jouent avec. C’est pareil, difficile de ne pas trouver une solution à un problème avec de telles possibilités de combinaison.

Par exemple, quand on a pas la possibilité d’avoir Fail2ban sous la main, chercher dans les logs de votre serveur Web les IPs les plus violentes en les classant par fréquence d’occurrence, et pourquoi pas bannir les 5 du groupe de tête, les plus agressives. En clair, une fois maîtrisées ces commandes « de base », seule votre imagination vous bridera. Amusez-vous bien 🙂

le plus récent le plus ancien
Notifier de
Carmelo
Invité
Carmelo

chouette explication 🙂 merci !