Articles

Comment ajouter des sauts (retour) à la ligne dans un énorme xml d'une seule ligne !

J'avais un grand fichier récupéré via un curl : curl -#v -o /tmp/output.xml "http://www.myserver.ch/extraction_file.php?mode=complex&typef=xml" le problème c'est que ce fichier "output.xml" était un gros xml valide d'une seule  ligne... un "wc -l /tmp/output.xml"  me retourne bien 1 ! Or la plupart des éditeurs n'aiment pas trop ouvrir ce genre de fichier d'une seule "énorme" ligne, voire même ils plantent lamentablement. La solution est d'utiliser un bon vieux oneliner en perl pour rajouter un saut de ligne après un tag fermant : perl -i -pe 's/<\/Adr>/<\/Adr>\n/g' /tmp/output.xml Et voilà , maintenant le fichier contient autant de ligne qu'il y a de tags fermants . Et du coup il est beaucoup plus facile à utiliser dans votre éditeur favori !

Génération automatique d'une liste de requêtes sql pour toutes les tables de Postgresql

Image
Il arrive assez régulièrement que l'on doive appliquer une modification à toute les tables d'une base de données postgresql . Par exemple s'il faut rajouter un droit de consultation pour un user particulier sur toutes les tables. On peut bien entendu se palucher à la main tous les : GRANT SELECT ON TABLE altitude TO userdbreadonly; pour autant de tables qu'il y a dans la base... Mais comme un bon informaticien déteste toutes les tâches répétitives,  il préférera trouver comment  écrire une requête dont le résultat correspondra à la liste des ordres sql qu'il veut exécuter, soit dans ce cas : SELECT 'GRANT SELECT ON TABLE ' || tablename || ' TO cgdbreadonly;' FROM pg_tables WHERE schemaname like 'public'  ORDER BY 1; qui lui retournera la liste de tous les GRANT SELECT pour toutes les tables liste qu'il n'aura plus qu'à exécuter...

GPG error sur template Openvz debian6 lors du apt-get update

Je venais de créer une nouvelle machine virtuelle openvz sur proxmox basée sur le template debian 6 amd64bit :debian-6.0-standard_6.0-2_amd64.tar.gz Une fois connecté dessus en ssh je lance un: apt-get update et j'obtiens un message d'erreur : W: GPG error: http://security.debian.org squeeze/updates Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AED4B06F473041FA W: GPG error: http://ftp.debian.org squeeze Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AED4B06F473041F La solution consiste par la mise a niveau du keyring debian avec un simple : apt-get install debian-archive-keyring j'ai pu ensuite relancer le apt-get update qui c'est déroulé sans accroc.

Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD

Image
Il se trouve que je devais migrer quelques machines virtuelle se trouvant sur un cluster proxmox sur le site de Lausanne, sur un autre cluster proxmox se trouvant à Lutry. Jusque-la rien de bien sorcier me direz-vous, si ce n'est qu'avec un lien réseau de faible débit entre les deux sites j'ai fait une copie initiale de mes images de bécannes virtuelles en fichier raw sur un disque externe. Sur le site de Lutry j'ai une config avec deux serveurs en cluster proxmox  lutrycalc01:~# pveca -l CID----IPADDRESS----ROLE-STATE--------UPTIME---LOAD----MEM---DISK  1 : 192.168.50.100  M     A     1 day 05:49   2.23     8%     1%  2 : 192.168.50.110  N     A     1 day 05:49   0.00     1%     1% chaque serveur à 3 disques logiques (de taillse identique) s'appuyant sur une config physique en RA...

Compter le nombre d'entités de type différentes dans un dessin dxf

Image
Quand on reçoit des données graphiques sous forme d'un simple fichier DXF, il se peut que l'on soit confronter au fait de vérifier le type d'entités différentes se trouvant dans ce fichier. l'utilitaire ogrinfo de la suite d'outil gdal  est bien pratique et il permet de résoudre ce petit problème en une seule ligne de commande sous n'importe quel shell tel que bash avec votre distribution Gnu/Linux favorite. Ceci permet de filtrer tout de suite un fichier d'un lot qui contiendrait des types d'entités que l'on ne veut pas traiter. ogrinfo -geom=SUMMARY -al  085_VOL2008.dxf |grep AcDbEntity|sort |uniq -c        332   SubClasses (String) = AcDbEntity:AcDb3dPolyline     580   SubClasses (String) = AcDbEntity:AcDbBlockReference     405   SubClasses (String) = AcDbEntity:AcDbCircle      64   SubClasses (String) = AcDbEntity:AcDbCircle:AcDbArc      50   SubClasses (String) = ...

Richard M. Stallman en tournée en Suisse Romande "It's Now & It's Free like in Freedom" !

Image
Richard M. Stallman, alias RMS  est un programmeur à l'origine du projet GNU   , auteur d'outils indispensables tels que l’éditeur de texte  GNU Emacs , le  compilateur C de GNU , le  débogueur GNU  mais aussi, en collaboration avec  Roland McGrath , le  moteur de production   GNU Make .   Il s'agit d'un vrai  "Personnage" figure emblématique, charismatique et incontournable du Monde du Libre Il a déclaré à plusieurs reprises « Je puis expliquer la base philosophique du logiciel libre en trois mots :  liberté, égalité, fraternité .  Liberté , parce que les utilisateurs sont libres. Égalité , parce qu'ils disposent tous des mêmes libertés.  Fraternité , parce que nous encourageons chacun à coopérer dans la communauté ». Il est actuellement en tournée de conférence dans la région suisse romande, le 8 et le 10 novembre à Lausanne, le 9 et le 11 à Genève. Ne ratez pas cette occasion unique de le rencont...

Ubuntu 10.10 est disponible !

Image
La 13ème version de la distribution Linux Ubuntu "The Maverick Meerkat" est disponible ! Plus d'informations en français sur le site du zéro Vous pouvez vous rendre aussi directement sur le site principal Ubuntu pour aller rechercher votre copie   Entre autres caractéristiques on a le passage au noyau Linux  2.6.35, et la nouvelle version de  Gnome 2.32. 

SuperTux is alive : Numéro 2 dans le top500 avec du Linux du Nvidia TESLA

Image
Dans un précédent post en mars dernier j'évoquais le fait qu'il y avait de forte chance que les futurs supercalculateurs dans le Top500 utilisent la puissance de calcul des processeurs graphiques actuels pour atteindre à un moindre coût d'acquisition et de consommation les sommets du top500...    Et bien ça y est c'est chose faite la Chine a rejoint  le classement de juin 2010 des supercalculateurs les plus puissants  de la planète, (le fameux Top500  ) avec trois supercalculateurs ! Et attention pas n'importe ou, elle place directement ces nouveaux   clusters dans le top20 (19ème,7ème et 2ème place) dont une deuxième place d'entrée de jeu. C'est très impressionnant, et surtout ce n'est probablement qu'un début, je suis près à parier qu'avant la fin de l'année la Chine risque de se placer encore plus haut.  En attendant la deuxième place est occupée par un supercalculateur du  National Supercomputing Centre in Shenzhen (NSCS) ...

Choisir parmi plusieurs versions de java sous Ubuntu

Image
Sous Linux Gentoo il existe une commande java-config qui permet de configurer la version de java runtime que l'on désire utiliser par défaut. Avec Ubuntu il faut utiliser la commande update-alternatives Pour différente raison j'ai besoin d'utiliser la dernière version de java provenant de chez SUN et les paquets se trouvant dans aptitude ne correspondent  pas forcément à la toute dernière version. Ainsi après avoir installé le jdk de Sun dans /opt et fait un lien symbolique sur la version courante avec (ln -s jdk1.6.0_19 jdk) je vais dire que c'est cette version que je veux utiliser avec ces deux commandes : sudo update-alternatives --install /usr/bin/java java /opt/jdk/jre/bin/java 1 sudo update-alternatives --config java lors de cette dernière commande je me verais présenter une liste des java disponibles sur le système et je n'aurais qu'à choisir parmi une d'entre elles avec le numéro se trouvant à gauche. Plus d'informations sont disponibles ...

Comment renommer 350 fichiers d'un coup d'un seul sous Linux-bash

Je me suis retrouvé dans la situation ou dans un répertoire j'avais 350 fichiers du style dtmgrid122413_1m.asc.gz qu'il fallai que je renomme en MNT_1224-13_1m.asc.gz grâce aux pipe et à sed c'est possible en une seule commande: for i in dtm*; do (mv $i `echo $i|sed 's/dtmgrid\([1-9]\{4\}\)/MNT_\1-/'`); done on retrouve une boucle for qui parcoure chaque fichier dans le répertoire courant et le stocke dans la variable i. Puis pour chaque fichier trouver on va faire un mv pour renommer l'ancien nom de fichier se trouvant en $i en quelquechose qui se trouve etre le résultat de l'expression: `echo $i|sed 's/dtmgrid\([1-9]\{4\}\)/MNT_\1-/'` notez bien que l'expression est entre backquotes c'est grâce à cela que l'on reçoit la valeur finale de l'éxécution de cette suite de commande et non pas une simple chaine de caractères équivalent à notre commande... en gros c'est grâce à une substitution sed " s/avant/apres/ " qui ...

SuperTux is back : 4.6 TeraFlops avec ATI Radeon™ HD 5970 & OpenCL let's go ride

Image
Et si en 2010 vous vous offriez  votre supercalculateur Linux personnalisé  : Viva  SuperTux ! Si on se rend sur la  fiche technique de la nouvelle ATI Radeon HD 5970   on découvre que cette nouvelle carte graphique possède une puissance de calcul assez impressionnante de 4.6  TeraFLOPS  par GPU : Processing power (single precision): 4.64 TeraFLOPS Processing power (double precision): 928 GigaFLOPS Polygon throughput: 1.45 billion polygons/sec Si on décide d'utiliser toute cette puissance pour  qqchose de plus constructif que des FPS et autre jeux stériles et bien on arrive vite à la conclusion que l'on peut avoir un supercalculateur pour pas cher. Nvidia avait déjà lancé CUDA mais personnellement, je pense comme dans l'article de Douglas Eadline, Ph.D.   ( GP-GPUs: OpenCL Is Ready For The Heavy Lifting sur Linux Magazine ) que   OpenCL a pas mal de chances d'avoir plus de succès...

Download du snapshoot de chromium

Image
Si vous êtes comme moi, vous aimez avoir   chromium sur votre distribution Linux favorite. Pers Personnellement rien que pour la syncro automatique des favoris et pour pouvoir tester webgl, j'avoue que je ne pourrais plus me passer de chromium. Pour avoir toujours la dernière version j'ai écrit ce petit script perl getchromium.pl Maintenant en lançant getchromium.pl sur ma Ubuntu j'obtiens la dernière archive pour Linux x86_64 qui va se décompresser dans le répertoire du nom de cette release et créer un lien symbolique sur ce répertoire. Comme j'ai créé sur mon bureau Gnome un lanceur qui pointe sur ~/tools/chromium/chrome-linux/chrome --enable-webgl je peux donc toujours lancer la dernière snapshoot de chromium x86_64 disponible sur le buildbot chromium.

Clonage d'une machine virtuelle OpenVZ

Image
Je suis un heureux administrateur système Linux qui utilise Proxmox comme plateforme de virtualisation J'utilise passablement les "conteneurs" OpenVZ. Et je venais de me finaliser un clônage comme indiqué sur le wiki , Comme j'étais sur un cluster proxmox, j'ai pris soin de créer au préalable mon nouveau conteneur depuis l'interface de management web du noeud "master" (j'utilise les mêmes valeurs de config que pour l'original), puis j'effectue une migration sur le noeud de destination. Ensuite j'ai effectué un ssh sur le noeud destination et j'ai effectué # vzctl stop 101 # vzctl stop 112 # rsync -avz /var/lib/vz/private/101/ /var/lib/vz/private/112/ # diff /etc/vz/conf/101.conf /etc/vz/conf/112.conf # théoriquement il ne devrait pas y avoir de différence si ce n'est l'adr IP qui doit être différente donc on démarre les deux noeuds # vzctl start 101 # vzctl start 112 Par rapport à la démarche proposée sur le wik...

Utiliser curl pour récupérer des logs sur un serveur Microsoft IIS avec l'authentification ntlm

Image
Quand il s'agit de récupérer des fichiers depuis un serveur Web Microsoft IIS, (sisi ça arrive dans la vie d'un sysadmin linux) il ne faut pas hésiter à utiliser curl (en lieu et place de wget) En effet curl (via libcurl) supporte toute les variantes d'authentification dont certaines spécifiques à Microsoft comme le fameux ntlm. Pour vérifier si vous avez déjà curl vous pouvez exécuter un simple dpkg -l |grep curl Ce qui dans mon cas donne sur une Ubuntu 9.1 : ii curl 7.19.5-1ubuntu2 Get a file from an HTTP, HTTPS or FTP server ii libcurl3 7.19.5-1ubuntu2 Multi-protocol file transfer library (OpenSS ii libcurl3-gnutls 7.19.5-1ubuntu2 Multi-protocol file transfer library (GnuTLS ii libcurl4-gnutls-dev 7.19.5-1ubuntu2 Development files and documentation for libc ii php5-curl 5.2.10.dfsg.1-2ubuntu6.3 CURL module for php5 Vous pouvez le cas échéant installer ces paquets avec un gestionnaire de paq...

Lire un site web en mode offline grâce à wget

Image
Il existe plusieurs "aspirateurs" de site web, il y a même une extension comme scrapbook pour firefox qui permettent de lire des infos ou une documentation en ligne sur votre netbook même sans connexion réseau mais je dois dire que en ce qui me concerne l'efficacité d'un outil tel que GNU Wget reste le top du must absolu ainsi avec un simple : wget -N -r --no-parent --convert-links http://www.example.com/projects/doc/ c'est tout le contenu du répertoire doc sur le site www.example.com que vous allez pouvoir consulter offline. La documentation de wget est disponible en ligne l'option -r signifie que la récursion est active, l'option  --no-parent  évite d'aspirer les répertoires parents et --convert-links permet de créer une copie contenant des hyperliens pointant correctement Essayez ! Vous verrez que vous ne pourrez plus vous en passer !

Pavé numérique innopérant ou bloqué sous Linux Ubuntu (Avec Gnome)

Si d'aventure d'un coup d'un seul un bô jour vous avez un pavé numérique qui ne semble plus fonctionner... Et ce malgré que que vous appuyez frénétiquement sur NumLock ou non, ça changer rien... Bon et ben je vous épargne de chercher vainement Support de votre clavier S520 Logitech (rien à voir il fonctionne bien au boot) Support des touches multimedia (la touce calculatrice n'y est pour rien) L'évt influence de la conjonction de Mars et Saturne... Non, non que no y que no "señor", il se trouve que vous utilisez Gnome (ou Ubuntu standard peut-être si vous préférez) et vous avez malencontreusement utilisez la combinaison de touche [Shift]+[Num Lock] qui a pour effet sous Gnome de désactiver totalement le pavé numérique Donc il suffit de refaire cette combinaison de touche et tout rentrera dans l'ordre... J'ai perdu une énergie à cause de ce truc... Me demande bien ce qui pouvais se passer dans l'esprit du gars qui a voulu mettre cett...

Changer le prompt en ligne de commande sous Bash

Quand on est tout le temps en train de travailler dans la console, il peut arriver que l'on désire changer le prompt du shell. Ce prompt peut ressembler à qqch du style : cfred@tuxhost:/var/log$ seulement parfois on arrive dans des profondeurs de répertoire qui rendent juste intenable l'affichage du path courant dans le prompt. Dans ce cas il suffit de changer la définition du prompt qui se trouve dans la variable PS1 cfred@tuxhost:/var/log$ SAVE=$PS1 cfred@tuxhost:/var/log$ PS1="\u:\W $ " cfred:log $ echo "Pour restaurer la valeur d'origine il suffira alors de faire" cfred:log $ PS1=$SAVE Il y a plusieurs caractères d'échappement qui peuvent être utilisé comme par exemple : \d pour la date \h le nom du host jusqu'au premier point (sans le suffixe dns) \H le nom du host complet \t l'heure au format 24h HH:MM:SS \T l'heure au format 12h HH:MM:SS \u le nom d'utilisateur courant \w le chemin compl...

postgresql et les encodages

Sur une distribution récente avec la base de données Postgresql je n'arrivais pas à créer une nouvelle BD avec un encodage LATIN1. Après quelques recherches le problème provient du fait qu'a l'installation du paquet le cluster est créé avec un encodage UTF8, pour vérifier regarder la valeur de : /usr/lib/postgresql/8.3/bin/pg_controldata /var/lib/postgresql/8.3/main/ Dans mon cas j'avais : LC_COLLATE:fr_CH.UTF-8 LC_CTYPE: fr_CH.UTF-8 Or le problème avec cette config c'est que du coup quand on veut créer une nouvelle base de données avec un encodage différent rien ne va plus. su postgres -c 'createdb -E LATIN1 -O cgdb goeland' On se voit recevoir un message fort peu sympathique en forme de fin de non-recevoir : createdb: database creation failed: ERREUR: l'encodage LATIN1 ne correspond pas à la locale fr_CH.UTF-8 du serveur DETAIL: Le paramètre LC_CTYPE du serveur nécessite l'encodage UTF8. L'explication se trouve dans la documenta...

Utiliser rsync pour syncroniser de gros volumes de données

Image
On se retrouve parfois dans la situation ou on a un serveur principal qui contient un certain volume de données qui doivent être copiée à intervalle régulier sur des serveurs "miroirs". Dans ces cas de figures il peut être intéressant de configurer d'apprendre à utiliser la commande rsync (voire même de configurer un serveur rsync). Cet utilitaire du projet samba maintenu par Wayne Davison est excellent pour les transferts de fichier en mode incrémental. Il y a une excellente documentation et de nombreux exemples sur le site du projet http://www.samba.org/rsync/ . S'il n'est pas déjà présent sur votre box, il peut être installé relativement facilement sur votre distribution Linux avec les outils de paquetages adapté ( yum install rsync rpm sous fedora & co, et apt-get install rsync pour debian, ubuntu et dérivés) Dans mon cas je l'utilise dans des scripts executé par des crontab toutes les nuits pour synchroniser quotidiennement plus de 80 GB de géodo...

Avoir une belle distro SliTaz sur sa clé USB

Avec l'utilitaire UNetbootin on peut intaller en quelques click de souris une chouette Distribution Linux comme par exemple la fameuse distro SliTaz (30 mb de concentré de bonheur) sur sa clé USB favorite