Réaliser de A à Z un webservice XML-RPC en Shell UNIX

Comprendre et mettre en place un webservice XML-RPC en Shell UNIX

Le XML-RPC est un truc simple : le client envoie une requête type web (comme celle du navigateur web) au format XML à un programme sur un serveur qui sert de webservice chargé de récupérer le XML. Dans ce XML, il y a une méthode appelée et ses paramètres à appliquer (les paramètres dépendent de la méthode). Après quelques vérifications protocolaires d'usage, le webservice analyse le XML pour extraire les informations donc il a besoin pour appeler la méthode avec ses paramètres puis il renvoie le résultat, au formt XML également.

Voyons concrètement avec un exemple.

Créer une copie ISO d'un disque amovible

Créer une copie ISO d'un CD ou DVD sous Windows ou UNIX avec dd

Sous Windows, pour créer la copie iso d'un CD-ROM ou DVD, il faudra :

  • Le CD ou DVD à copier

  • Le programme dd compilé pour Windows

Sous UNIX/LINUX, pour créer la copie iso d'un CD-ROM ou DVD, il faudra :

  • Le CD ou DVD à copier

>/dev/null

Utilisation de >/dev/null sous UNIX

Dans un shell UNIX, la commande </dev/null permet de répondre à une question. Prenons comme exemple la commande suivante :

cp fichier1 fichier2

Si fichier2 existe déjà, la commande cp demande s'il faut surcharger le fichier (forcer la copie) ou pas (y/n). Or, dans un shell automatique qui doit s'effectuer sans intervention humaine, cette question bloque l'exécution du shell jusqu'à la saisie de la réponse par un utilisateur. Et si nous ne voulons pas que la copie s'effectue en cas de la présence de fichier2, c'est à dire répondre n à la question, il faut alors utiliser la redirection </dev/null, de la façon suivante :

Les redirections

Les redirections de fichier ou d'affichage sous UNIX

Lors de l'exécution d'une commande (shell, programme, etc.) il y a deux sorties disponibles, la sortie standard stdout sur le canal 1 et la sortie des erreurs stderr sur le canal 2. Ces canaux sont accessibles pour rediriger les flux de données.

Les files (pipe)

Les files (tubes, fifo, pipe, etc.) sous UNIX

Les files sont très puissantes sous UNIX et permettent de simplifier énormément le code des shells et les instructions à taper.

Les applications sont nombreuses. Les files évitent d'avoir à stocker des données temporairement dans des variables ou des fichiers.

Les tests

Réaliser des tests en shell UNIX

Les tests, comme leur dénomination l'indique, permettent de faire un certain nombre de tests, donc de contrôles et d'agir en conséquence.

Les cookies

Gérer les cookies en shell UNIX

Les cookies permettent d'échanger des messages entre un client et un serveur. Les cookies sont des fichiers stockés sur la machine du client et permetttent de stocker des informations utilisables par le serveur lors de connexions ultérieures.

En shell, la création et l'utilisation de cookies n'est pas difficile si ce n'est qu'elles nécessitent une syntaxe précise.

Générer un sitemap

Générer automatiquement un fichier sitemap.xml pour un site web

Le sitemap.xml est un fichier nécessaire pour améliorer le référencement d'un site web. Il peut être maintenu manuellement. Mais il pourrait être utile de se libérer de cette tâche en le générant automatiquement.

Cache Manifest: Un site web plus rapide

Anticiper le chargement des pages en utilisant le cache

La version 5 du HTML apporte son lot d'améliorations. Ainsi, pour il est possible d'utiliser un cache pour un mode hors connexion. Mais nous pouvons détourner l'usage de ce cache (manifest) pour accélérer la navigation sur un site web.

Le manifest est une option apparue avec le HTML 5 afin d'indiquer au navigateur toutes les ressources à charger dans le cas d'une déconnexion.

En effet, les applications destinées aux téléphones portables subissent régulièrement des déconnexions du fait du déplacement, Si vous prenez un ascenseur, ou que votre métro passe dans un tunnel, ce qui coupe votre connexion. Si la page n'est pas chargée, l'affichage et l'usage ne se font pas correctement car un navigateur, pour des raison de rapidité affiche ce qu'il a dès qu'il l'a téléchargé. C'est pourquoi, il n'est pas rare de voir le texte avant les images...

Lorsqu'il est employé, le cache force le navigateur à d'abord charger les fichiers dont il a besoin avant d'afficher la page. Ainsi, en cas de déconnexion intempestive, l'usager n'est pas perturbé et il peut utiliser l'application web (ou le site), le temps de la déconnexion. En effet, si vous étiez occupé à rédiger un courriel au moment de la déconnexion, il serait dommage de perdre le message et d'être obligé de tout recommencer.

Conversion de l'encodage URL en UTF-8

Décodage de application/x-www-form-urlencoded en UTF-8 correspondant

Lors d'une communication entre un navigateur et un serveur Web, les données hors us-ascii sont converties dans un format spécial, x-www-form-urlencoded par défaut.

Par exemple la chaîne l'hiver est froid est convertie en l%E2%80%99hiver est froid.

la chaîne %E2%80%99 traduit l'entité &#x2019; mais nous voyons bien que les deux valeurs sont différentes. Pour traduire la valeur URl en valeur humainement exploitable, il faut faire un opération de conversion.

Traiter un fichier sur stdin

Gérer l'entrée stdin en shell UNIX

UNIX permet de rediriger en entrée (STDIN) et en sortie (STDOUT, STDERR) des informations. Si les commandes UNIX standard gèrent bien la redirection d'un fichier en entrée, la question peut se poser si l'on veut le faire soi-même dans un shell.

Les expressions régulières

Modèles d'expressions régulières

Si les expressions régulières ont une puissance indéniable, elles n'en restent pas moins difficiles à mémoriser et à appliquer sans se tromper ou chercher pendant des heures.

Voici quelques exemples tirés de problématiques quotidiennes.

Le shell en couleurs

Utiliser le shell en couleurs sous UNIX

Par défaut, votre UNIX préféré vous propose des couleurs qui ne permettent pas de mettre en évidence certaines informations. dans un affichage monochrome, comment mettre en évidence ce qui est important, ce qui ne l'est pas ou tout simplement avoir un affichage plus joli ?

La réponse est simple : en utilisant des couleurs. car contrairement à ce qu'on pourrait croire, UNIX peut afficher autre chose que du gris (en réalité du blanc) sur fond noir.

date

Utilisations de la commande date sous UNIX

Dans un shell UNIX, la commande date permet de modifier, d'afficher la date ou encore d'effectuer quelques opérations.

trap

Capturer les interruptions en shell UNIX

Lorsqu'un shell UNIX s'achève soit de lui-même soit par une erreur (interuption par ctrl+C, une erreur de syntaxe ou de commande, ...) il se peut que les répertoires ne soient pas propres ou remis en état.

En effet, surtout dans le cas d'une fin en erreur, en fonction de l'endroit où le script s'est arrêté, les générations de fichiers et/ou de données n'étant pas finies, tout n'est pas forcément propre et cohérent. Dans certains cas, il peut même être utile d'exécuter un autre script en cas d'erreur afin, par exemple, d'envoyer un message d'alerte, effectuer une restauration ou une sauvegarde, ...

Malheureusement, pour réaliser tout cela il faut pouvoir réagir en fonction du type d'arrêt de script. trap est la commande qui permet justement de faire cela.

xargs

Utilisation de xargs dans un shell UNIX

xarg est une commande UNIX puissante qui permet de récupérer les arguments passés par la commande précédente. Il permet d'éviter des structures lourdes comme :

[commande] | while read param
do
[traitement]
done

A la place, nous avons quelque chose de plus simple, de plus condensé :

[commande] | xargs [traitement]

Les CGI

Créer et utiliser les CGI en shell UNIX

Les CGI permettent l'interfaçage entre le web et le serveur. Cela permet de tariter des formulaires, générer des pages dynamiquement, ajouter de l'intelligence. Les CGI peuvent être fait avec n'importe quel langage : PHP, perl... et le shell, bien entendu.

Mon choix personnel s'est porté sur le shell car je connais bien ce langage et je ne me voyais pas ajouter un langage supplémentaire sur mon serveur. Etant très mobile, cela me permet de créer mes CGI n'importe où, à partir du moment où je dispose d'un UNIX.

D'autre part, cela permet de transposer aisément des shells réalisés en local vers une utilisation délocalisée sans avoir à transcrire dans un autre langage.

at

Utilisations de la commande "at" sous UNIX

Sous UNIX, la commande at permet de différer des exécutions de commandes.

Création automatisée de la navigation

Comment créer automatiquement la navigation dans les pages web

La cohérence d'un site web tient à l'enchaînement des pages qui le composent.

Cet enchaînement depend essentiellement de la façon dont les concepteurs (i.e administateurs, auteurs, designers, …) ont conçu l'information et la présentation. Parfois, il est délégué à un CMS. Mais plus le nombre de pages augmente, plus l'enchaînement est complexe à gérer, notamment si l'on souhaîte le modifier.

Voyons comment automatiser une partie de cette gestion et, en allant plus loin, comment la générer automatiquement.

ls en couleurs

Utiliser le ls en couleurs sous UNIX

Par défaut, votre UNIX (dans cet exemple, FreeBSD) préféré vous propose des couleurs qui, à la longue peuvent lasser. Pour changer, un simple tour dans le man donne la solution à tous vos problèmes. ls est une commande qui possède de nombreuses fonctionnalités. Celles qui concernent la couleur indiquent ce qui suit.