Expect, automatisation de commandes interactive

Il m’arrive parfois de devoir débloquer une clé SSH dont je ne me souviens qu’à moitié de la phrase de passe. Je me souviens de la phrase mais plus des pièges qu’elle contient. J’enchaîne alors les essais jusqu’à retrouver la bonne version. Pour être sûr de tester toutes les options, je préfèrerais créer un fichier avec toutes les variations possibles de la clé et envoyer ce fichier sur l’entrée de ssh. Malheureusement ssh est prévu pour fonctionner en mode interactif, on ne peut donc pas faire quelque chose comme cat keys | ssh. J’en étais réduit à tester à la main toutes les combinaisons… jusqu’à ce que je découvre expect.

Expect est un programme qui ajoute au langage de script TCL des instructions permettant d’automatiser des commandes interactives comme par exemple ftp ou ssh. Les trois principales instructions à connaître sont :

  • spawn pour exécuter une commande sous le contrôle d’Expect ;
  • expect pour attendre que le programme affiche une chaîne de caractères ;
  • send pour envoyer une chaîne au programme.

Un exemple valant mieux qu’un long discours, voici le script que je viens de torcher. Je ne garantis pas que c’est la meilleure façon de faire, mais ça marche. Il lit des phrases de passe dans le fichier pass.txt et s’arrête en affichant la bonne. Pour mieux comprendre son fonctionnement vous pouvez virer l’envoi vers /dev/null des sorties d’Expect.

  #!/bin/bash
  IFS=$'\n'
  for line in $(cat pass.txt);
  do
    expect >/dev/null 2>/dev/null << EOF
      spawn ssh-add ~/.ssh/id_rsa
      expect Enter
      send "$line\r"
      expect {
        Bad   {puts "NOT FOUND\n"; exit 1}
        added {puts "FOUND\n" ; exit 0}
      }
      close
  EOF
    if [ $? -eq 0 ]
    then
      echo -e "Passphrase is $line\r"
      break
    fi
  done

Voilà, dans trois mois lorsqu’ssh-agent tombera à nouveau, j’aurai moins de mal à me rappeler de toutes mes phrases de passe.

Génération

Quarantenaire, j’ai eu la chance de vivre deux (r)évolutions. La démocratisation de l’informatique au début des années 80, via la micro-informatique, et la démocratisation d’Internet dans les années 90, grâce au Web. Vivre ces moments particuliers où une technologie devient accessible au plus grand nombre est passionnant, car au début, rien n’existe, tout est à créer, donc tout est possible. À la fin des années 90, lorsqu’on voulait s’exprimer sur le Web, il n’y avait pas le choix, il fallait apprendre HTML pour créer son site à la main, comprendre les bases d’HTTP, créer des serveurs Web, des navigateurs… Ceux qui ont vécu cette période étaient comme des pionniers qui défrichaient une terre vierge et pouvait la façonner selon leurs rêves.

Peu à peu nous avons forgé nos outils, et ces outils se sont répandus. Je pense par exemple à l’arrivée des premiers logiciels de publication comme le vénérable SPIP. Le Web s’est ouvert plus largement, pour créer un site il suffisait désormais de demander à un camarade informaticien d’installer un SPIP, apprendre à utiliser l’interface, et c’est tout. Les logiciels se sont perfectionnés, concentrés, et aujourd’hui l’essentiel de la publication sur le Web se fait via quelques énormes plateformes. Hormis une poignée de geeks, plus personne ne cuisine son site personnel à la main.

Forcément, les pionniers sont nostalgiques. Ils rêvaient d’une terre de liberté où chacun créerait. Ils se retrouvent avec un supermarché sans plus guère de créativité. Le rêve initial s’est évanoui. Alors, dans un sursaut, les pionniers protestent. Hé, les gens, c’est pas ça qu’on voulait ! Arrêtons les conneries et revenons aux fondamentaux. Apprenez comment fonctionne le Web, les protocoles et les langages hypertexte, et repartons sur la voie qu’on avait imaginée.

Une ou deux générations avant moi, c’est l’électronique qui s’était démocratisée. En ce temps là des passionnés passaient tout leur temps libre le fer à souder à la main, à inventer de nouveaux montages, bricoler des postes de radio ou autre. Je n’ai pour ma part pratiquement pas fait d’électronique. Était-ce parce que je ne suis absolument pas manuel, ou parce que je n’en ai pas eu besoin. Pourquoi fabriquer un poste de radio alors qu’on en trouvait des dizaines de modèles dans le commerce pour quelques francs. Je n’ai jamais vraiment cherché à reconquérir ma souveraineté dans ce domaine. En remontant plus loin, on pourrait sans doute trouver d’autres exemples, la mécanique automobile ou autre. Et pourquoi pas l’agriculture. L’immense majorité de la population n’est depuis longtemps plus autonome pour ses besoins les plus basiques. Je peux comprendre qu’elle se soucie peu d’être dépendante du système dans des domaines moins vitaux.

Vouloir enseigner aux jeunes générations le fonctionnement du Web est un combat généreux. Mais si vraiment nous voulons leur donner les moyens d’être autonomes, il faudrait aussi leur expliquer comment fonctionne un ordinateur, et plus bas encore les bases de l’électronique. Rendre autonome ne peut se limiter à la couche la plus haute. Mais j’ai peur que les jeunes générations se moquent de savoir créer un site Web comme ma génération, globalement, s’en moquait de savoir fabriquer un poste de radio ou planter des choux.

Ça ne les empêchera pas pour autant d’être créatives. D’autres évolutions pointent leur nez, l’auto-fabrication par exemple. Elles leur donneront l’occasion de défricher leurs propres terres vierges, d’expérimenter leurs propres utopies. Leur feront conquérir de nouvelles zones d’autonomies et oublier toutes celles auxquelles, génération après génération, nous avons renoncé.

Des jeux bidouillables

« Imaginez le Web comme un immense terrain de jeu ouvert. Où les joueurs deviennent peu à peu des créateurs de jeu. Où vous pouvez jouer à votre jeu favori sur n’importe quel terminal, n’importe où, n’importe quand. Et où vos propres créations sur le Web vous apportent la gloire, la fortune et l’adoration de joueurs du monde entier. »

Cette modeste introduction annonce le prochain Game on, un concours de création de jeux pour le Web, à l’initiative de Mozilla. Le but est bien sûr de démontrer une fois de plus qu’aujourd’hui HTML 5 et les navigateurs qui l’implémentent forment une plateforme crédible pour développer des jeux uniquement avec les technologies du Web.

Mais le réel intérêt à mes yeux de l’initiative est qu’elle propose de créer des jeux bidouillables. Je paraphrase à nouveau : « Imaginez des jeux que vous pourriez améliorer en les bidouillant et en les remixant, en utilisant les briques du Web, HTML, CSS et JavaScript, comme un éditeur de niveau. Remplacer la tête de ce zombie par celle de votre chien ? Allez-y ! » Chloé Varelidi, une développeuse de jeux qui travaille pour la Fondation Mozilla, propose de « voir les jeux comme des systèmes ouverts et créatifs, comme le Web lui-même, conçus pour être bidouillés. Les jeux sont traditionnellement à l’avant-garde des technologies numériques, repoussant en permanence les frontières du possible. Mozilla vous invite à ré-imaginer le Web comme la nouvelle génération de consoles de jeu, et à utiliser le pouvoir du navigateur pour révolutionner la façon dont nous créons des jeux et nous y jouons. ».

Je ne suis pas du tout un joueur, mais cette annonce m’enthousiasme, car elle me dispense d’écrire une réponse à un article lu il y a quelques jours.

Dans une contribution aux Vendredis Intellos, Laetitia Hawkins s’inquiète d’une baisse de la créativité des enfants qu’elle attribue entre autres aux jeux électroniques. L’article contient plus qu’assez de mots clés (psychologie, études réalisées aux états-unis, etc) pour que dès les premières phrases je l’ai rangé au rayon sornettes en gros. Il n’empêche, au-delà de cet article même, la question du lien entre les jeux et l’apprentissage de la bidouille et de la création mérite d’être posée. Je compare souvent le Web à de célèbres (mais sexistes) briques de construction. J’y ai énormément joué étant môme, et veux bien admettre que ça a contribué à mon affection pour le Web. Mais les jeux électronique des années 80 ont tout autant développé ma créativité de bidouilleur. J’ai appris à bricoler du code en essayant de trafiquer ces jeux, en modifiant avec un éditeur hexadécimal quelques octets pour obtenir plus de vies, en extrayant et modifiant les cartes et les images — ah le temps passé à essayer de décoder les images d’un strip-poker… En ce temps là, la non-existence de YouPorn obligeait à être astucieux. Même si les programmes n’étaient pas conçus pour être modifiés, j’ai appris le B-A BA du métier en les triturant. Je ne connais pas les jeux sortis ces 25 dernières années, mais aussi fermés soient-ils, je suis persuadé qu’ils offrent encore des points d’entrée pour qui veut s’en servir pour créer autre chose. Prétendre que les jeux numériques nuisent à l’apprentissage de la créativité me parait donc un peu exagéré.

Je reconnais cependant que si j’ai trituré des jeux électroniques, c’est parce que ça me plaisait, j’avais une affinité avec les babasses. Les jeux n’étaient pas spécialement bidouillables, il fallait en avoir vraiment envie pour forcer la porte. Avoir des jeux plus simples à tripatouiller ne serait pas un luxe, et justement le Web, avec son architecture entièrement ouverte, offre une belle opportunité de créer des jeux bidouillables. Et Game On est l’occasion rêvée pour explorer cette voie.

Bref, si vous aimez les jeux, le Web, et avez envie d’un monde un peu plus bricolable, j’espère que vous allez aller jeter un œil au concours, et pourquoi pas soumettre un prototype avant le 24 février 2013.

Je déteste les supermarchés

Je déteste les supermarchés.

Je déteste les supermarchés parce que dès que j’y entre, je ne suis plus un citoyen mais un suspect. Le vigile va vouloir fermer mon sac d’un lien plastique qu’il ne sera plus là pour retirer. Son collègue patrouille discrètement dans les rayons, observant du coin de l’œil les moindres gestes. Le plafond est truffé de caméras et l’arrière boutique du moindre Franprix ressemble à un PC sécurité. À la caisse, on va me demander de montrer mon sac, vérifier que je n’ai pas planqué un paquet de chips dans le double fond d’une boite de conserve. Il faut franchir des portillons électroniques, comme dans les aéroports — à quand les scanners corporels —, avec en permanence la crainte d’avoir sur soi un objet qui déclenchera l’alarme, nous désignera à la vindicte populaire et nous exposera à une humiliante fouille, qu’on accepte parce qu’on n’a évidemment pas le temps d’attendre que des flics se déplacent.

Je déteste les supermarché parce qu’à moins de pouvoir se permettre de passer pour un riche fou en refusant la carte de fidélité « gratuite », ce sont des lieux de fichage. Tous nos achats y sont enregistrés, analysés, et pour avoir un peu travaillé dans le domaine, je sais la masse d’informations que l’on peut induire sur quelqu’un en consultant ses tickets de caisse.

Je déteste les supermarché car ce sont le royaume de la manipulation. L’environnement entier n’a qu’un seul but : amener le client à consommer, acheter plus que ce dont il avait besoin en entrant. Lui souffler des envies fugaces. Le manipuler. Les cinq sens sont sollicités pour pousser à remplir compulsivement nos chariots. À consommer toujours plus, à s’endetter, à creuser sa tombe.

Je déteste les supermarché pour leur rôle dans l’économie, parasites qui écrasent les petits producteurs et traient les clients. Je déteste les supermarchés pour ce qu’ils représentent, temples modernes de la mortifère religion consumériste.

Je déteste les supermarchés, et je ne voudrais pas que le Web en devienne un, un lieu de flicage, de fichage, de manipulation, dédié au culte de la consommation.

Je déteste les supermarchés.

J’y fais l’essentiel de mes courses. Et suis bien mal placé pour critiquer ceux qui par volonté, paresse ou simple indifférence transforment peu à peu mon terrain vague de jeu en un nouveau centre commercial.

Mise à jour du 9 octobre 2014. Suite à un échange sur Twitter, j’ai fait quelques recherches sur le cadre légal des contrôles par les vigiles. Concernant les restrictions sur les sacs à l’entrée du magasin, je n’ai rien trouvé, si ce n’est cet article, mais qui ne fournit pas de référence juridique. Par contre, concernant les fouilles, l’article L613 du code de la sécurité intérieure stipule que les vigiles « peuvent procéder à l’inspection visuelle des bagages à main et, avec le consentement de leur propriétaire, à leur fouille ». Donc si on vous demande d’ouvrir votre sac à la sortie, vous devez le faire, mais vous pouvez refuser qu’on le fouille. Dans ce cas, soit le vigile a des raisons valables de croire que vous venez de commettre un délit (la loi parle de flagrant délit, mais la notion est floue), et dans ce cas, comme n’importe quel citoyen, il a le droit de vous retenir jusqu’à l’arrivée de la police, en vertu de l’article 73 du code de procédure pénale. Cependant, les mesures mises en œuvre doivent être « proportionnées à la gravité de l’infraction reprochée et ne pas porter atteinte à la dignité de la personne ». Moralité, il ne faut jamais oublier d’imprimer Légifrance avant d’aller faire ses courses, et se préparer à quelques heures de palabres pour ne pas cautionner en les acceptant les abus de pouvoir des propriétaires de supermarché. Ou renoncer à fréquenter les épiceries aux pratiques trop agressives.

Je ne suis parti nulle part

et j’en suis depuis longtemps revenu

Esquisse de bilan à écrire

On me demandait récemment ce que je comptais organiser à l’occasion d’un prochain changement de dizaine sur le registre d’état civil. Ça m’a fait sourire.

Je n’ai pas l’intention de fêter « ça ».

Je ne suis pas fétichiste des chiffres. Tout au plus peuvent-ils servir de prétexte à retrouvailles. Mais de retrouvailles il ne saurait plus être question. Ceux et celles que j’ai connues et aimées ont depuis longtemps été avalés par le brouillard. Sans doute n’existent-ils plus, plus comme avant du moins. Et même s’ils existaient encore, j’aurais bien trop honte de ce que je suis devenu pour oser me présenter devant eux et elles.

Jadis, je vivais sur le mythe des retrouvailles. Quelles que soient les difficultés du temps présent, j’avais toujours un projet de retrouvailles avec l’une ou l’autre et je m’y accrochais. Quelques soirées ensemble dans l’année donnaient une raison de se lever le matin, aidaient à faire passer les jours. Voilà bien longtemps que je n’ai plus ressentie l’excitation de l’attente de rencontres à venir. Mes amis se sont évanouis. Lassés de mes conneries, mes jérémiades, mon immobilisme, mon égoïsme, mes longs silences, des épreuves que je leur faisais subir pour les éprouver. Et je n’ose pas retourner vers eux, trop honteux et de ce que je leur ai infligé et du visage que je présente aujourd’hui, bien plus façonné par les trahisons et les reniements que par le temps.

Le temps qui passe a érodé toutes les couches de plâtre dont je m’étais maquillé. Il a révélé peu à peu la forme brute qui se cachait en dessous. Et elle n’est pas jolie à voir. Le temps et mes conneries ont dissipé les illusions que je me faisais sur moi, contredit toutes mes déclarations intransigeantes, douché mes espoirs.

J’ai trahi à peu près tout ce à quoi je croyais tenir. J’ai trahi à peu près tous ceux auxquels je croyais tenir. Les mots dont je me saoulais ne peuvent résister au flux impétueux des faits.

La date fatidique m’indiffère, il y a longtemps que je m’y prépare. À chaque fois que je commence à rêver, à espérer, il suffit d’apercevoir mon reflet pour me souvenir que s’en est fini de l’âge des possibles et des espoirs. J’ai franchi le sommet, roule à présent sur l’autre pente, tombe dans le gouffre des plus jamais, des regrets, des remords…

Je ne réaliserai jamais mes rêves d’adolescent. Mon rêve. M’évader, m’envoler, ne plus être moi, ne plus être moi… Aujourd’hui, à quoi bon est devenu mon unique horizon. À quoi bon faire encore le moindre effort, puisque tous les possibles sont derrière moi, à quoi bon bouger, à quoi bon m’échiner sur ces lignes, vain mot d’excuse.

Je m’accorde juste une pause pour pousser à nouveau ma jérémiade favorite avant de retourner au silence de la cellule que je me suis bâtie. Car de mon naufrage je suis l’architecte passionné. Sans prise sur ce mystère, faisons au moins semblant d’en être l’instigateur. À défaut de changer ma vie, je me suis souvent borné à la saboter consciencieusement. Saboter la partition pour marquer mon refus du rôle, du costume, du maquillage. « Le désespoir est une forme supérieure de la critique ». C’est sans doute la forme la plus avancée de ma critique.

À défaut d’avoir été, ai-je au moins fait ? La liste de mes contributions au bonheur des miens tient sur une feuille de papier à cigarettes. Pas grand chose face au plomb de toutes les saloperies qui s’entassent sur l’autre plateau de la balance.

Les lumières se sont rallumées depuis longtemps. Je reste seul assis dans un coin de la salle de bal. La fête est finie. Je n’ai pas osé danser.

La fête est finie mais l’horloge et tous les restes de vie des autres qui jonchent le parquet livrent leur implacable verdict : la nuit est encore longue et avant d’enfin pouvoir enfin aller me coucher il me faudra balayer, laver, astiquer, ranger les restes du festin.

Oui, la fête est finie, reste à payer l’addition, même si on n’en a guère profité.

La fête est finie, reste à gommer les derniers souvenirs heureux, pour qu’ils arrêtent d’alimenter le brasier des regrets.

La fête est finie, reste à lutter contre l’envie de se projeter dans le passé, d’organiser des reconstitutions des quelques scènes heureuses, d’essayer de retrouver les acteurs de ces quelques soirées entre happy-few, aujourd’hui de parfaits étrangers, où le carcan de glace se fendillait. Difficile de résister à la nostalgie.

Me reste à m’occuper d’un enfant. La bonne blague ! Lui apprendre à danser, moi qui même lorsque je m’essayais au pogo ai toujours eu l’air gauche. Lui montrer le chemin, moi qui ne suis jamais parti nulle part. Que toutes les excursions ont invariablement ramené à mon point de départ, juste un peu plus cabossé, délesté de quelques illusions, alourdi de quelques remords. De lui servir d’exemple, moi qui ai toujours tout loupé. De l’aider à grandir, quand dans ma tête je n’ai jamais réussi à prendre conscience que je n’avais plus 14 ans. La bonne blague ! Triste blague.

Reste surtout à me taire.

Fork me on GitHub