Abonnement à ma liste de contacts

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 

La problématique

Désormais que je n'ai plus de Joomla pour gérer l'intégralité des mes fichiers que je dois mettre à la disposition de mes utilisateurs, je dois me débrouiller avec les moyens du bord, les moyens que j'ai à ma disposition. Et à ma grande surprise, moi qui fût un Linuxien il y a quelques années encore, mais j'ai vite tourné la page, j'ai été (et je suis encore) agréablement surpris des outils mis à ma disposition en mode CLI de windows ! Wondows 10 a fait des petits progrès !

AVERTISSEMENT : Si j'emploie le terme Excel dans cet article, ou feuille libre office, dans ma "plume" ici, ca désigne la même chose

La résolution

Avant toute action, j'ai récupéré l'intégralité des fichiers de mon serveur distant (un simple serveur FTP avec html statique) en local sur mon disque. Je n'ai pas pouusé le bouchon a utiliser wget car je bosse depuis lort longtemps avec Filezilla

Mon actuel souci était le suivant : après avoir fait dir /s /b /a sur ma ligne de commande en guise de test, je me suis aperçu que j'obtenais très vite ce que je voulais (pareil, la commande DIR a bien évolué depusi MS-DOS 3.3) : la liste des fichiers et de leurs chemins complets :

DIR

C'est fort interessant mais, allez vous me dire, ca ne fait que d'afficher ... Alors oui, est c'est la raison pour laquelle je redirige la sortie standard désormais dans un fichier : dir /s /b /a >monfic.txt afin de pouvoir récupérer une liste des miliers de fichiers à ouvrir ! Une fois ce fichier monfic.txt (listant mes fichiers) obtenu, je l'importe (ou copie colle en fonction de son volume) dans un tableur (libre office dans mon cas)

Soyons informaticiens

Désormais que j'ai une "image" de mon FTP en local, je vais coder et "développer" (si on peut dire comme ca) une feuille openOffice de "management" de mes fichiers. Je voulais manager mes fichiers distants depuis ma feuille openOffice, mais je me suis vite heurté a des problemes de time out et d'autres soucis, à en lire mon fil de forum. Et j'ai testé, bataillé et découvert des choses vraiment interessantes ...

L'opton d'intégration de tests dans Libre office

Au premier abord, c'est ainsi que je voulais faire : une fonction qui me retourne un booléen si le fichier (distant ou local) existait. mais pas si simple : il existe bien une fonction pour tester la présence d'un fichier.... mais elle n'opère pas le test sur un serveur distant. Je me suis donc retourné vers une fonction de LibreOffice Calc qui, au départ, est utilisée pour interroger un webservice. Comme mes fichiers distants sont des PDF, cette fonction =SERVICEWEB("http://MonServeur.tld/microdata.pdf")  me retourne le CONTENU du PDF (qui est du binaire, affiché dans une cellule de texte) :

soffice.bin aphFsrOpuD

Ainsi, il est possibre de tester si le contenu de la cellule est vide ou pas. Ca marche... mais y'a un mais ! En effet, comme je le disais, j'ai des centaines de fichiers à tester (actuellement j'en suis à environs 46 000 et c'est pas fini). Chaque test prend entre deux et trois secondes par fichiers : (46 000 * 2)/60 = 1533 minutes, soit 25 heures ... à chaque fois que je crée UNE modification. Bref c'est inenvisageable !

L'option mamaille: La génération de ligne de code (fichier .bat)

L'option mamaille, comme on  dit par chez nous, c'est de dissocier Excel de la volonté d'avoir le résultat en direct du webservice ! En revanche, Excel, possède une superbe fonction incontournable (pour moi) que je trouve sensationnelle : CONCATENER. Grâce à cette fonction, je vais pouvoir générer  des lignes de commandes, que je pourrai copier-coller dans un fichier .bat. Alors oui c'est moins automatique mais c'est juste un copier-coller. Notons au passage que j'aurais pu générer un bouton qui me génère le fichier  bat.

Voici la copie d'écran que je vais vous commenter :

soffice.bin oJEDK3xzGQ

  1.  dans la colonne J, c'est le début de la commande curl qui teste la présente du fichier. Dans notre cas, la commande retourne soit  code HTTP 200 si le fichier est trouvé, soit 404 si pas trouvé
  2. dans la colonne L, ce sont les fichiers à tester,
  3. La colonne L est le résultat de ma concaténation : =CONCATENER(J10;" ";L10;"|findstr HTTP")

Détaillons désormais la ligne de commande cURL :

  • curl : appel de la commande cURL
  • -silent : la commande curl passe en mode silencieux et donc non verbeux !
  • http://.. : c'est l'URL du fichier dont il faut tester sa présence/absence sur le serveur
  • | le pipe permettant de rediriger le resultat vers une autre commande (tuyau nommé)
  • findstr : Recherche des modèles de texte dans les fichiers. Ici on va rechercher la chaine HTTP

 Comme j'obtiens une liste de commandes, je les copie-colle dans un fichier texte dons l'extension est .bat, ce qui me permettra de lancer le batch pour désormais voir les fichiers absent de ceux en ligne

Rapport sondage marche

Voici le rapport statistique du sondage (auquel vous pouvez toujours répondre) que j'ai lancé sur le sujet

 

Mon GitHub

Voyant que l'intégration du flux RSS ralentissait tout mon site, voisi le simple lien de mon flux RSS : Mon GitHub