Les articles de Linux Pratique Hors-Série N°39 - Juillet/Août 2017

Image promotionnelle
Qu’est-ce qu’un « Shell » ? Une brève histoire d’« Unix »...
Article mis en avant

Préface

La ligne de commandes… que ce soit pour paramétrer plus finement son système, régler un problème ou traiter plus rapidement certaines situations, on finit toujours par devoir/vouloir s’y frotter et lorsque c’est fait, on se rend compte qu’il y a sans cesse de nouvelles choses à apprendre la concernant ! Mais avant de s’aventurer plus en avant, un certain nombre de connaissances de base sont nécessaires pour pouvoir évoluer sereinement.

Si vous êtes utilisateur d’un système GNU/Linux (ou autre « Unix »), mais que vous n’êtes pas formé à l’informatique, vous avez certainement dû néanmoins être souvent confronté à un « terminal ». Cet environnement, fait de lignes de commandes, souvent désigné sous le terme de « Shell » pour les initiés, et très certainement, pour le néophyte, une application difficile à prendre en main. Cet article vise donc à, non seulement, vous permettre de prendre en main votre terminal, et aussi de bien comprendre son fonctionnement et les raisons, historiques, de sa conception.
Dans cet article, nous allons nous attaquer à un aspect fondamental de tout système dit « Unix » : le système de fichiers. En effet, une bonne compréhension de ce dernier facilite grandement la prise en main de son système, et permet aussi de faciliter la conception de scripts « Shell ». Il est en effet essentiel de bien saisir la manière dont le système conçoit – ou plutôt abstrait – les différentes ressources à sa disposition, justement à l’aide de son système de fichiers. C’est crucial, car que ces ressources soient le disque dur, de la mémoire vive ou même encore des périphériques, sous un système « Unix », tout est au final la même chose : un fichier ! Démonstration par la pratique...
La complexité qu’on attribue à la programmation « Shell » est essentiellement due au manque de soin apporté à l’étude et la bonne compréhension de son mécanisme d’interprétation. En fait, si celui-ci semble souvent intuitif, surtout pour les utilisateurs déjà habitués à d’autres langages de script ou de programmation, il est fondamental de bien comprendre chacune des étapes de l’analyse d’une ligne de script pour prendre réellement en main le « Shell ». Cet article va donc détailler, étape par étape, comment un interpréteur, « Bash » ou autre, va découper et exécuter les commandes saisies ou les lignes d’un script « Shell », et ainsi, expliciter, autant que possible, le mécanisme d’interprétation de ce dernier.
Cet article aborde l’un des aspects les plus puissants, mais aussi les plus complexes, des fonctionnalités du « Shell » : le traitement de flux de données à l’aide de la commande ‘sed’. Cette approche met à portée de l’utilisateur des capacités de traitement, rapides et faciles, de flux de données, rarement égalées dans d’autres langages de programmation, mais nécessite une bonne compréhension de nombreux mécanismes, dont le moindre n’est pas la définition d’expressions régulières...
Outre les différents logos accolés sur votre machine ou les informations que vous avez pu glaner ici ou là lors de l'achat de celle-ci, ne vous est-il pas arrivé de vous demander quel processeur ou bien combien de mémoire dispose réellement votre machine sans pour autant savoir où et comment trouver ces informations ? Vous allez découvrir dans cet article qu'il existe de nombreux outils en ligne de commandes faciles d'utilisation qui permettent de recenser ces informations sur un ordinateur de bureau ou un nano-ordinateur comme un Raspberry Pi.
Qui parmi nous n'a jamais fouillé dans les journaux systèmes lorsqu'il est confronté à un problème quel qu'il soit, ou encore lorsqu'un service fraîchement installé refuse de fonctionner. Il est inévitable de passer par les fichiers correspondant aux logs et de mener une enquête jusqu’à l'interpellation du suspect.
Au démarrage d’un système, de nombreux logiciels sont lancés, de manière à s’assurer que ce dernier soit entièrement fonctionnel lorsque l’utilisateur va démarrer sa session. Ce dernier démarre lui-même ensuite les logiciels dont il a besoin. Mais pourquoi ne pas automatiser aussi le démarrage de ces logiciels ? S’assurer qu’ils tourneront toujours, et libérer ainsi l’utilisateur de cette tâche répétitive. Voyons donc ensemble, dans cette recette, comment mettre en place un « service » (avec Systemd).
Il existe 3 possibilités de planifier des tâches sur un système Linux, tout dépend de son besoin. Planifier une tâche pour qu’elle se répète à un intervalle régulier ou alors planifier une tâche pour qu’elle s'exécute une seule fois à un instant T ou tout simplement planifier une tâche au démarrage du système.
Tout système d’exploitation moderne est un système multiprocessus. Ce qui signifie qu’il peut lancer, en parallèle, plusieurs processus, et donc exécuter plusieurs tâches de manière simultanée (tout du moins du point de vue de son utilisateur). Voyons comment, au sein d’un simple interpréteur de commandes, ou d’un script, nous pouvons profiter de cette fonctionnalité si puissante.
De nos jours, on utilise souvent des ordinateurs portables, que l’on déplace régulièrement, interrompant ainsi de nombreux programmes s’exécutant dessus. Dans le même temps, on n’a jamais autant disposé de systèmes « distants », s’exécutant sur un « cloud » ou ailleurs, qui eux, à l’inverse fonctionnent « non-stop ». Ne serait-il pas agréable de pouvoir exécuter une application interactive (client de discussion en ligne, logiciel de partage de fichiers, programme de sauvegarde…) sur ces machines distantes, pour qu’elle soit toujours en fonctionnement, et simplement s’y connecter depuis son portable ? C’est possible, aisément, et c’est le thème de cette recette.
Avec les appareils et la légion de services connectés, la menace d’une attaque ou d’une faille logicielle est omniprésente et sécuriser sa machine n’est plus un luxe. Comment être sûr de tout ce qui se connecte et transite ? La réponse à ce problème se trouve dans l’utilisation d’un firewall. Sans céder à la paranoïa, nous verrons comment mettre en place un contrôle de base du réseau et apprendrons à devenir autonomes sur le sujet.
Même si les virus ciblant Linux restent rares, il serait dangereux de croire que nous sommes invulnérables simplement grâce à un manchot. Il existe d’ailleurs des antivirus pour Linux, et même si la plupart des infections informatiques qu’ils détectent sont inoffensives pour notre système, ils peuvent nous éviter de les propager lorsque par exemple nous échangeons des documents.
L'une des qualités indéniables de l’ensemble des systèmes « Unix » est l’abstraction faite par le système entre ses composants physiques – disque dur, mémoire vive et autres périphériques, et leur représentation au sein du système, presque toujours sous forme de fichier. Dans cette recette, nous allons illustrer tout l’intérêt de cette abstraction, par deux manipulations très simples : le montage d’un système de fichiers à partir d’un fichier ISO puis à partir de la mémoire vive du système !
Desk est un petit outil en shell pour gérer différents environnements de travail. Si vous travaillez sur différents projets, vous devez retenir des commandes différentes, avec plusieurs options. On se surprend alors beaucoup à rechercher une commande dans l’historique, au mieux à relire ses notes si on en a pris. Desk va vous permettre d’organiser votre travail de manière plus efficace.
Vous utilisez peut-être aujourd’hui des solutions en ligne (type cloud) pour sauvegarder vos données. Il ne s’agit ni plus ni moins qu’une synchronisation de répertoires et de fichiers entre votre machine et un espace de stockage « quelque part » sur la Toile. Si vous vous demandiez comment faire pour arrêter d’utiliser ces solutions et vous réapproprier la sauvegarde de vos données, voilà sûrement l’outil qu’il vous faut.
Si, comme moi, vous passez beaucoup de temps à travailler au sein de votre terminal, il est souvent peu pratique d’en « ressortir » pour utiliser une autre application (graphique). L’un des exemples les plus courants est le lecteur de musique, et c’est pour cette raison que cette recette porte sur un lecteur très simple, mais efficace, nommé MPlayer et conçu pour fonctionner au sein d’un terminal.
Ne plus vous y retrouver dans vos photos à cause de noms non significatifs peut vous arriver pour diverses raisons. Dans ce cas, l’outil Exiv2 en ligne de commandes peut vous venir en aide.
Faire des opérations répétitives sur un nombre important de photos est fastidieux. Heureusement, la ligne de commandes est là pour remédier à ce problème avec l’outil ImageMagick. Ici, nous allons voir l’exemple de la création de galeries d’images web.
Une ligne de commandes c’est bien, en combiner plusieurs c’est mieux ! Ici nous allons parler script. Un script qui vous permettra de gagner en temps et en ressources sur vos serveurs web, en particulier dans l’automatisation du traitement de vos galeries d’images.