<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7513164</id><updated>2012-02-16T14:00:52.092+01:00</updated><category term='quota'/><category term='postgresql'/><category term='pavé_numérique'/><category term='rsync'/><category term='syntax color'/><category term='gentoo'/><category term='top500'/><category term='perl'/><category term='cloning'/><category term='now'/><category term='disk'/><category term='openvz'/><category term='lvm'/><category term='GNU'/><category term='gdal'/><category term='curl'/><category term='date'/><category term='oneliner'/><category term='sed'/><category term='rpm'/><category term='gnome'/><category term='awk'/><category term='shell'/><category term='ati'/><category term='utf8'/><category term='internet'/><category term='debian'/><category term='teraflop'/><category term='vim'/><category term='ogrinfo'/><category term='kvm'/><category term='latin1'/><category term='code generation'/><category term='linux'/><category term='apache'/><category term='ogr'/><category term='PS1'/><category term='liveusb'/><category term='cuda'/><category term='apt-get update'/><category term='php'/><category term='opencl'/><category term='dxf'/><category term='bash'/><category term='yesterday'/><category term='drbd'/><category term='[shift]+[numLock]'/><category term='regex'/><category term='RMS'/><category term='text'/><category term='radeon 5970'/><category term='initdb'/><category term='getchromium'/><category term='log'/><category term='chromium'/><category term='ubuntu'/><category term='virtualisation'/><category term='LC_CTYPE'/><category term='nvidia'/><category term='proxmox'/><title type='text'>LAPT (Linux And Perl Tips)</title><subtitle type='html'>J'aime Linux, j'aime Perl ...
Que dire d'autre ? Ce blog est destiné à partager mes expériences, mes trucs et mes astuces dans ces deux domaines.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7513164.post-5593384727040809706</id><published>2011-11-01T18:28:00.000+01:00</published><updated>2011-11-01T18:28:17.321+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curl'/><category scheme='http://www.blogger.com/atom/ns#' term='oneliner'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Comment ajouter des sauts (retour) à la ligne dans un énorme xml d'une seule ligne !</title><content type='html'>J'avais un grand fichier récupéré via un curl :&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;curl -#v -o /tmp/output.xml "http://www.myserver.ch/extraction_file.php?mode=complex&amp;amp;typef=xml"&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;le problème c'est que ce fichier "output.xml" était un gros xml valide d'une seule&amp;nbsp; ligne...&lt;br /&gt;un "wc -l /tmp/output.xml"&amp;nbsp; me retourne bien 1 !&lt;br /&gt;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.&lt;br /&gt;La solution est d'utiliser un bon vieux oneliner en perl pour rajouter un saut de ligne après un tag fermant :&lt;br /&gt;&lt;b&gt;perl -i -pe 's/&amp;lt;\/Adr&amp;gt;/&amp;lt;\/Adr&amp;gt;\n/g'  /tmp/output.xml&lt;/b&gt;&lt;br /&gt;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 !&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5593384727040809706?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5593384727040809706/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5593384727040809706' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5593384727040809706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5593384727040809706'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2011/11/comment-ajouter-des-sauts-retour-la.html' title='Comment ajouter des sauts (retour) à la ligne dans un énorme xml d&apos;une seule ligne !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-7014880253107126242</id><published>2011-06-17T10:40:00.001+02:00</published><updated>2011-06-17T11:24:57.485+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Génération automatique d'une liste de requêtes sql pour toutes les tables de Postgresql</title><content type='html'>&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;a href="http://www.postgresql.org/about/"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-SwBYuElrUQw/TfsdEo1-asI/AAAAAAAAAlI/KelOBSWlhxs/s1600/Postgresql.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Il arrive assez régulièrement que l'on doive appliquer une modification à toute les tables d'une base de données &lt;a href="http://www.postgresql.org/"&gt;postgresql&lt;/a&gt;.&amp;nbsp;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 :&lt;br /&gt;GRANT SELECT ON TABLE altitude TO userdbreadonly;&lt;br /&gt;pour autant de tables qu'il y a dans la base...&lt;br /&gt;Mais comme un bon informaticien déteste toutes les tâches répétitives, &amp;nbsp;il préférera trouver comment&lt;br /&gt;&amp;nbsp;écrire une requête dont le résultat&amp;nbsp;correspondra à la liste des ordres sql qu'il veut&amp;nbsp;exécuter, soit dans ce cas :&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;SELECT 'GRANT SELECT ON TABLE ' || tablename || ' TO cgdbreadonly;' FROM pg_tables WHERE schemaname like 'public' &lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;ORDER BY 1;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;qui lui retournera la liste de tous les GRANT SELECT pour toutes les tables&lt;br /&gt;liste qu'il n'aura plus qu'à&amp;nbsp;exécuter...&lt;span id="goog_1307451585"&gt;&lt;/span&gt;&lt;span id="goog_1307451586"&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-7014880253107126242?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/7014880253107126242/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=7014880253107126242' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/7014880253107126242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/7014880253107126242'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2011/06/generation-automatique-dune-liste-de.html' title='Génération automatique d&apos;une liste de requêtes sql pour toutes les tables de Postgresql'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-SwBYuElrUQw/TfsdEo1-asI/AAAAAAAAAlI/KelOBSWlhxs/s72-c/Postgresql.png' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Lausanne, Suisse</georss:featurename><georss:point>46.5199617 6.6335970999999745</georss:point><georss:box>46.4461117 6.565252099999975 46.5938117 6.701942099999974</georss:box></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-5165000602378309096</id><published>2011-03-23T16:45:00.000+01:00</published><updated>2011-03-23T16:45:01.903+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apt-get update'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='openvz'/><category scheme='http://www.blogger.com/atom/ns#' term='proxmox'/><title type='text'>GPG error sur template Openvz debian6 lors du apt-get update</title><content type='html'>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 &lt;br /&gt;Une fois connecté dessus en ssh je lance un:&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;apt-get update&lt;/b&gt;&lt;/div&gt;et j'obtiens  un message d'erreur :&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;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&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;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&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;La solution consiste par la mise a niveau du keyring debian avec un simple :&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;apt-get install debian-archive-keyring&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;j'ai pu ensuite relancer le apt-get update qui c'est déroulé sans accroc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5165000602378309096?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5165000602378309096/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5165000602378309096' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5165000602378309096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5165000602378309096'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2011/03/gpg-error-sur-template-openvz-debian6.html' title='GPG error sur template Openvz debian6 lors du apt-get update'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-3569825806772269073</id><published>2011-03-18T17:08:00.001+01:00</published><updated>2011-03-18T17:10:01.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lvm'/><category scheme='http://www.blogger.com/atom/ns#' term='kvm'/><category scheme='http://www.blogger.com/atom/ns#' term='drbd'/><category scheme='http://www.blogger.com/atom/ns#' term='proxmox'/><title type='text'>Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.proxmox.com/images/proxmox/proxmox_logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.proxmox.com/images/proxmox/proxmox_logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;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.&lt;br /&gt;Sur le site de Lutry j'ai une config avec deux serveurs en &lt;a href="http://pve.proxmox.com/wiki/Proxmox_VE_Cluster"&gt;cluster proxmox&lt;/a&gt;&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;lutrycalc01:~#&lt;b&gt; pveca -l&lt;/b&gt;CID----IPADDRESS----ROLE-STATE--------UPTIME---LOAD----MEM---DISK&lt;br /&gt;&amp;nbsp;1 : 192.168.50.100&amp;nbsp; M&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 day 05:49&amp;nbsp;&amp;nbsp; 2.23&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1%&lt;br /&gt;&amp;nbsp;2 : 192.168.50.110&amp;nbsp; N&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 day 05:49&amp;nbsp;&amp;nbsp; 0.00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1%&lt;/span&gt;&lt;/div&gt;chaque serveur à 3 disques logiques (de taillse identique) s'appuyant sur une config physique en RAID5.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.drbd.org/fileadmin/gfx/drbd_logo_small.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://www.drbd.org/fileadmin/gfx/drbd_logo_small.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;le 2ème disque logique /dev/sdb1&amp;nbsp; est répliqué sur les deux noeud grâce à l'excellent &lt;a href="http://www.drbd.org/"&gt;DRBD&lt;/a&gt; de LINBIT. Il y a un excellent howto pour configurer un disque drbd sur un cluster proxmox sur le &lt;a href="http://pve.proxmox.com/wiki/DRBD"&gt;wiki de proxmox&lt;/a&gt;&lt;br /&gt;L'intérêt principal d'un disque logique utilisant DRBD sous Proxmox est d'avoir les deux noeuds d'un cluster avec toujours&amp;nbsp; la même image du même fichier raw (d'une machine virtuelle kvm donnée) sur chaque noeud, ce qui permet une migration quasi instantanée en "live migration" sous proxmox et qui théoriquement assure aussi une tolérance aux pannes en cas de mort subite du noeud principal (ça j'ai pas encore testé)&lt;br /&gt;Ceci dit DRBD est un excellent projet et un produit fort intéressant et bien documenté qui peut être utilisé indépendament de proxmox comme solution plus classique de tolérance aux pannes il y a d'ailleurs &lt;a href="http://www.ibm.com/developerworks/linux/library/l-drbd/index.html"&gt;un excellent article sur le site d'ibm&lt;/a&gt; d'ou vient l'image ci-après.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ibm.com/developerworks/linux/library/l-drbd/figure2.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://www.ibm.com/developerworks/linux/library/l-drbd/figure2.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Donc sur mon disque externe j'avais une image de 20GB au format raw classique de ma machine virtuelle&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;lutrycalc01:~#&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt; qemu-img info /mnt/BACKUP/goeland/proxmox/kvm/images/102/vm-102-disk.raw&lt;/span&gt;&lt;/b&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;image: /mnt/BACKUP/goeland/proxmox/kvm/images/102/vm-102-disk.raw&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;file format: raw&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;virtual size: 20G (21474836480 bytes)&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;disk size: 20G&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Mon problème était de savoir comment copier cette image sur le noeud principal de mon serveur. J'avais déjà au préalable créé une machine virtuelle aux caractéristiques identiques mais avec &lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;lutrycalc01:~#&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt; cat /etc/qemu-server/102.conf &lt;/span&gt;&lt;/b&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;name: kvm_gosqlcc02&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;ide2: cdrom,media=cdrom&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;vlan0: rtl8139=FE:A2:23:8B:EF:83&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;bootdisk: ide0&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;ostype: w2k3&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;ide0: drbdvg0:vm-102-disk-1&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;memory: 1024&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;onboot: 1&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;sockets: 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Un scan des volumes logiques avec lvscan me donnait une première piste :&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;lutrycalc01:~#&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt; lvscan&lt;/span&gt;&lt;/b&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp; ACTIVE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '/dev/pve/swap' [31.00 GB] inherit&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp; ACTIVE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '/dev/pve/root' [96.00 GB] inherit&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp; ACTIVE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '/dev/pve/data' [1.63 TB] inherit&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;&amp;nbsp; ACTIVE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '/dev/drbdvg/vm-102-disk-1' [20.00 GB] inherit&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;avec un "ps aux |grep kvm" j'ai pu voir comment proxmox lance la machine virtuelle ayant son disque sur le volume group en drbd&lt;br /&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;lutrycalc01:~#&lt;b&gt; ps aux |grep kvm&lt;/b&gt;&lt;br /&gt;root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2751&amp;nbsp; 0.0&amp;nbsp; 0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S&amp;nbsp;&amp;nbsp;&amp;nbsp; Mar17&amp;nbsp;&amp;nbsp; 0:00 [kvm-irqfd-clean]&lt;br /&gt;root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26549&amp;nbsp; 5.4&amp;nbsp; 3.2 1167180 1066152 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sl&amp;nbsp;&amp;nbsp; 17:41&amp;nbsp;&amp;nbsp; 3:12 /usr/bin/kvm -monitor unix:/var/run/qemu-server/102.mon,server,nowait -vnc unix:/var/run/qemu-server/102.vnc,password -pidfile /var/run/qemu-server/102.pid -daemonize -usbdevice tablet -name kvm_gosqlcc02 -smp sockets=1,cores=1 -nodefaults -boot menu=on -vga cirrus -tdf -localtime -rtc-td-hack -k fr-ch &lt;b&gt;-drive file=/dev/drbdvg/vm-102-disk-1&lt;/b&gt;,if=ide,index=0,boot=on -drive file=/dev/cdrom,if=ide,index=2,media=cdrom -m 1024 -netdev type=tap,id=vlan0d0,ifname=tap102i0d0,script=/var/lib/qemu-server/bridge-vlan -device rtl8139,mac=FE:A2:23:8B:EF:83,netdev=vlan0d0 -id 102 -cpuunits 1000&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;J'arrête cette machine virtuelle via l'interface web de proxmox et il ne me restait plus qu'a copier avec un bon vieux "dd" l'intégralité de mon disque :&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;lutrycalc01:~# &lt;b&gt;dd if=/mnt/BACKUP/goeland/proxmox/kvm/images/102/vm-102-disk.raw of=/dev/mapper/drbdvg-vm--102--disk--1 bs=1M&lt;/b&gt;&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;20480+0 records in&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;20480+0 records out&lt;/span&gt;&lt;br style="font-family: Verdana,sans-serif;" /&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;21474836480 bytes (21 GB) copied, 1510.34 s, 14.2 MB/s&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Et ensuite j'ai pu démarrer ma machine virtuelle qui était la réplique exacte de celle se trouvant sur le site de Lausanne.&lt;br /&gt;Une petite règle DNAT sur le firewall de Lutry et me voila "presque" en mesure de faire du rdesktop sur mon serveur virtuel depuis mon site distant, je dis presque parceque j'ai quand même du aller modifier le default gateway de ce serveur. Mais en installant rdesktop sur une box Linux debian&amp;nbsp; se trouvant déjà sur place et sur laquelle j'avais un accès ssh j'ai pu faire un rdesktop distant et aller corriger le default gateway de mon serveur virtuel.&lt;br /&gt;Encore une fois Merci GNU/Linux, merci Debian, merci Proxmox, merci OpenSsh, merci DRBD, merci à tous les projets du Monde Libre à tous ces anonymes qui tous ensembles de par leur travail, leur effort et leur ouverture d'esprit rendent toute cette magie possible.&lt;br /&gt;C'est beau la vie d'un ingénieur système sous GNU/Linux !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-3569825806772269073?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/3569825806772269073/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=3569825806772269073' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3569825806772269073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3569825806772269073'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2011/03/comment-copier-une-machine-virtuelle.html' title='Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-1530191037845721035</id><published>2010-11-09T12:04:00.002+01:00</published><updated>2010-11-09T18:42:41.971+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='ogrinfo'/><category scheme='http://www.blogger.com/atom/ns#' term='dxf'/><category scheme='http://www.blogger.com/atom/ns#' term='gdal'/><category scheme='http://www.blogger.com/atom/ns#' term='ogr'/><title type='text'>Compter le nombre d'entités de type différentes dans un dessin dxf</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.gdal.org/gdalicon.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.gdal.org/gdalicon.png" /&gt;&lt;/a&gt;&lt;/div&gt;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.&lt;br /&gt;l'utilitaire &lt;a href="http://www.gdal.org/ogrinfo.html"&gt;ogrinfo&lt;/a&gt; de la suite d'outil &lt;a href="http://www.gdal.org/"&gt;gdal&lt;/a&gt;&amp;nbsp;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.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;ogrinfo -geom=SUMMARY -al &amp;nbsp;085_VOL2008.dxf |grep AcDbEntity|sort |uniq -c&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;b style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;332 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDb3dPolyline&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;580 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDbBlockReference&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;405 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDbCircle&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; 64 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDbCircle:AcDbArc&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; 50 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDbLine&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;201 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDbMText&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; 1036 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDbPolyline&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;9 &amp;nbsp; SubClasses (String) = AcDbEntity:AcDbText:AcDbText&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-weight: normal;"&gt;Il est intéressant de noter que ogrinfo suporte un sous-ensemble du langage SQL ce qui permet d'écrire :&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;ogrinfo -sql 'SELECT DISTINCT Layer FROM entities&amp;nbsp;ORDER BY Layer&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;' -fields=YES -geom=NO -al -q &amp;nbsp; 085_VOL2008.dxf |grep Layer&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;ce qui aura pour effet de lister les différentes couches du dessin dxf&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-1530191037845721035?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/1530191037845721035/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=1530191037845721035' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1530191037845721035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1530191037845721035'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/11/compter-le-nombre-dentites-de-type.html' title='Compter le nombre d&apos;entités de type différentes dans un dessin dxf'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-857895110680358682</id><published>2010-11-05T10:36:00.002+01:00</published><updated>2010-11-05T10:55:18.386+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU'/><category scheme='http://www.blogger.com/atom/ns#' term='RMS'/><title type='text'>Richard M. Stallman  en tournée en Suisse Romande "It's Now &amp; It's Free like in Freedom" !</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_iMeJmHinc5w/TNPQE65Ss3I/AAAAAAAAAk8/d-fiaOZV4qg/s1600/gnu-meditate_fel_1280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/_iMeJmHinc5w/TNPQE65Ss3I/AAAAAAAAAk8/d-fiaOZV4qg/s320/gnu-meditate_fel_1280.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_iMeJmHinc5w/TNPJR5W82dI/AAAAAAAAAk4/n0uhv8WFhY4/s1600/Fly_Stallman-v4-image-petite_display.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_iMeJmHinc5w/TNPJR5W82dI/AAAAAAAAAk4/n0uhv8WFhY4/s200/Fly_Stallman-v4-image-petite_display.png" width="150" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://fr.wikipedia.org/wiki/Richard_Stallman"&gt; Richard M. Stallman, alias RMS&lt;/a&gt;&amp;nbsp;est un programmeur à l'origine du projet &lt;a href="http://www.gnu.org/"&gt;GNU&lt;/a&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;, auteur d'outils indispensables tels que l’éditeur de texte&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;a href="http://fr.wikipedia.org/wiki/GNU_Emacs" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="GNU Emacs"&gt;GNU Emacs&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;, le&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;a href="http://fr.wikipedia.org/wiki/GNU_Compiler_Collection" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="GNU Compiler Collection"&gt;compilateur C de GNU&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;, le&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;a href="http://fr.wikipedia.org/wiki/GNU_Debugger" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="GNU Debugger"&gt;débogueur GNU&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&amp;nbsp;mais aussi, en collaboration avec&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;a href="http://fr.wikipedia.org/wiki/Roland_McGrath" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Roland McGrath"&gt;Roland McGrath&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;, le&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;a href="http://fr.wikipedia.org/wiki/Moteur_de_production" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Moteur de production"&gt;moteur de production&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;a href="http://fr.wikipedia.org/wiki/GNU_Make" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="GNU Make"&gt;GNU Make&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;.&lt;/span&gt;&amp;nbsp;&amp;nbsp;Il s'agit d'un vrai &amp;nbsp;"Personnage" figure emblématique, charismatique et incontournable du Monde du Libre&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Il a déclaré à plusieurs reprises « Je puis expliquer la base philosophique du logiciel libre en trois mots&amp;nbsp;:&amp;nbsp;&lt;i style="background-color: yellow;"&gt;liberté, égalité, fraternité&lt;/i&gt;.&amp;nbsp;&lt;i&gt;Liberté&lt;/i&gt;, parce que les utilisateurs sont libres.&lt;i&gt;Égalité&lt;/i&gt;, parce qu'ils disposent tous des mêmes libertés.&amp;nbsp;&lt;i&gt;Fraternité&lt;/i&gt;, parce que nous encourageons chacun à coopérer dans la communauté ».&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;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 à&amp;nbsp;Genève. Ne ratez pas cette occasion unique de le rencontrer et filez vous inscrire&amp;nbsp;l’entrée&amp;nbsp;est gratuite, pardon je voulais dire "LIBRE"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium;"&gt;&lt;a href="http://www.ynternet.org/ynternet.org/rms-tour"&gt;http://www.ynternet.org/ynternet.org/rms-tour&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-857895110680358682?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/857895110680358682/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=857895110680358682' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/857895110680358682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/857895110680358682'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/11/richard-m-stallman-en-tournee-en-suisse.html' title='Richard M. Stallman  en tournée en Suisse Romande &quot;It&apos;s Now &amp; It&apos;s Free like in Freedom&quot; !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iMeJmHinc5w/TNPQE65Ss3I/AAAAAAAAAk8/d-fiaOZV4qg/s72-c/gnu-meditate_fel_1280.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-7917950465929712595</id><published>2010-10-11T11:55:00.000+02:00</published><updated>2010-10-11T11:55:25.737+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 10.10 est disponible !</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ol9y-RJZ_lA/THNEFq5XEGI/AAAAAAAAAsU/M7kK74vglHM/s1600/ubuntu10.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://3.bp.blogspot.com/_ol9y-RJZ_lA/THNEFq5XEGI/AAAAAAAAAsU/M7kK74vglHM/s200/ubuntu10.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: 13px; font-style: italic;"&gt;La 13ème version de la distribution Linux Ubuntu "The Maverick Meerkat" est disponible ! &lt;a href="http://www.siteduzero.com/news-62-37523-p1-ubuntu-10-10-est-disponible.html"&gt;Plus d'informations en français sur le site du zéro&lt;/a&gt;&lt;br /&gt;Vous pouvez vous rendre aussi directement sur le &lt;a href="http://www.ubuntu.com/desktop/get-ubuntu/download"&gt;site principal Ubuntu pour aller rechercher votre copie&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: 13px; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: 13px; font-style: italic;"&gt;Entre autres caractéristiques on a le passage au noyau Linux&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: small;"&gt;&lt;i&gt;2.6.35, et la nouvelle version de&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: small;"&gt;&lt;i&gt;Gnome 2.32.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: 13px; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: 13px; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #1f1f1f; font-family: 'Trebuchet MS', Verdana, Tahoma, sans-serif; font-size: 13px; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-7917950465929712595?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/7917950465929712595/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=7917950465929712595' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/7917950465929712595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/7917950465929712595'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/10/ubuntu-1010-est-disponible.html' title='Ubuntu 10.10 est disponible !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ol9y-RJZ_lA/THNEFq5XEGI/AAAAAAAAAsU/M7kK74vglHM/s72-c/ubuntu10.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-4193799991485880398</id><published>2010-06-02T11:23:00.001+02:00</published><updated>2010-06-02T11:48:20.222+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top500'/><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='opencl'/><category scheme='http://www.blogger.com/atom/ns#' term='nvidia'/><category scheme='http://www.blogger.com/atom/ns#' term='cuda'/><title type='text'>SuperTux is alive  : Numéro 2 dans le top500 avec du Linux du Nvidia TESLA</title><content type='html'>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&amp;nbsp;graphiques&amp;nbsp;actuels pour atteindre à un moindre coût d'acquisition et de consommation les sommets du top500...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_iMeJmHinc5w/TAYZaLyJU5I/AAAAAAAAAkE/eEsahiug71w/s1600/supertux_china_nebulae_num2_top500.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_iMeJmHinc5w/TAYZaLyJU5I/AAAAAAAAAkE/eEsahiug71w/s320/supertux_china_nebulae_num2_top500.png" /&gt;&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Et bien ça y est c'est chose faite la Chine a rejoint &amp;nbsp;le classement de juin 2010 des supercalculateurs les plus puissants &amp;nbsp;de la planète, (le fameux &lt;a href="http://www.top500.org/lists/2010/06/press-release"&gt;Top500&lt;/a&gt;&amp;nbsp;) avec trois supercalculateurs ! Et attention pas n'importe ou, elle place directement ces nouveaux &amp;nbsp; clusters dans le top20 (19ème,7ème et 2ème place) dont une deuxième place d'entrée de jeu. C'est&amp;nbsp;très&amp;nbsp;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.&amp;nbsp;&lt;/div&gt;&lt;div&gt;En attendant la deuxième place est occupée par un supercalculateur du&amp;nbsp;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial,Verdana,Helvetica,sans-serif; font-size: 13px; line-height: 14px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue',Arial,Helvetica,sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;National Supercomputing Centre in Shenzhen (NSCS)&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;basé sur le&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: Arial,FreeSans,Helvetica,sans-serif; font-size: 14px; line-height: 21px;"&gt;TC3600 un serveur&amp;nbsp;&lt;/span&gt;lame du fabriquant chinois Dawning qui utilise des Intel X5650 à 6 coeurs et des cartes Tesla C2050 de Nvidia&amp;nbsp;avec le GPU .&lt;/div&gt;&lt;div&gt;Comme l'explique si bien cet article du &lt;a href="http://www.lemonde.fr/technologies/article/2010/06/01/la-chine-met-au-point-un-super-ordinateur-deuxieme-plus-puissant-au-monde_1365974_651865.html"&gt;Monde&lt;/a&gt; :&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: georgia; font-size: 15px; line-height: 22px;"&gt;"...Le système est capable d'opérer à une vitesse de 1,271 pétaflop par seconde. Un pétaflop correspond à un million de milliards d'opérations à la seconde. En vitesse théorique, soit maximale, Nebulae peut opérer jusqu'à 2,98 pétaflops par seconde, ce qui en ferait le super-ordinateur le plus rapide au monde...."&lt;/span&gt;&lt;/blockquote&gt;Il y a à mon humble avis trois conclusions à tirer :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;L'empire du Milieu n'a pas fini de nous surprendre en matière d'innovation et de technologie &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Linux domine très largement&lt;/b&gt; ce segment très exigeant avec plus de 90% de part de marché. Microsoft est totalement insignifiant (à peine 1%) Si on tient compte en plus de l'arrivée prochaine de périphériques low-cost qui seront aussi de plus équipé de différentes déclinaison de Linux (Androïde, Chrome OS, Meego de Intel &amp;amp; Nokia) et de la convivialité des distributions Linux Desktop tel que Mint ou Ubuntu et bien il est très peu probable que l'action Microsoft soit un un choix très pertinent dans un portefeuille. Et que dire des responsables de Tic qui s'obstinent à payer des fortunes pour faire moins bien que des logiciels libres avec des instances de &amp;nbsp;Sharepoint &amp;nbsp;en veut tu en voilà. La prochaine restriction budgétaire va faire mal, très mal pour tous ceux qui n'ont pas vu venir le vent et qui serons balayé par la vague du Libre qui s'impose de plus en plsu comme la seule solution viable et&amp;nbsp;pérenne&amp;nbsp;dans le temps concernant le TIC.&lt;/li&gt;&lt;li&gt;La généralisation de l'adoption d'&lt;b&gt;OpenCL et Cuda va&amp;nbsp;accélérer&amp;nbsp;l'adoption des GPU de Nvidia et de Ati comme périphérique de calculs ultra-puissant pour un rapport prix/puissance dérisoire&lt;/b&gt;. Et le paradigme de la&amp;nbsp;programmation massivement parallèle&amp;nbsp;va encore plus s'imposer comme le chalenge à relever dans les années qui viennent.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-4193799991485880398?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/4193799991485880398/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=4193799991485880398' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/4193799991485880398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/4193799991485880398'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/06/supertux-is-alive-numero-2-dans-le.html' title='SuperTux is alive  : Numéro 2 dans le top500 avec du Linux du Nvidia TESLA'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iMeJmHinc5w/TAYZaLyJU5I/AAAAAAAAAkE/eEsahiug71w/s72-c/supertux_china_nebulae_num2_top500.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-7702257283689591845</id><published>2010-04-14T15:41:00.002+02:00</published><updated>2010-04-14T15:43:58.754+02:00</updated><title type='text'>Choisir parmi plusieurs versions de java sous Ubuntu</title><content type='html'>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.&lt;br /&gt;Avec Ubuntu il faut utiliser la commande &lt;b&gt;update-alternatives&lt;/b&gt;&lt;br /&gt;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&amp;nbsp; pas forcément à la toute dernière version.&lt;b&gt; &lt;/b&gt;&lt;br /&gt;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 :&lt;br /&gt;&lt;b&gt;sudo update-alternatives --install /usr/bin/java java /opt/jdk/jre/bin/java 1&lt;/b&gt;&lt;br /&gt;&lt;b&gt;sudo update-alternatives --config java&lt;/b&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ubuntu-fr.org/" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www-static.ubuntu-fr.org/css/img/logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;Plus d'informations sont disponibles sur l'excellent &lt;a href="http://doc.ubuntu-fr.org/java"&gt;site de la Communauté francophone des utilisateurs d'Ubuntu&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-7702257283689591845?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/7702257283689591845/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=7702257283689591845' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/7702257283689591845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/7702257283689591845'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/04/choisir-parmi-plusieurs-versions-de.html' title='Choisir parmi plusieurs versions de java sous Ubuntu'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-1666760305976820212</id><published>2010-04-08T11:50:00.001+02:00</published><updated>2010-04-08T11:50:59.130+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oneliner'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='sed'/><title type='text'>Comment renommer 350 fichiers d'un coup d'un seul sous Linux-bash</title><content type='html'>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&lt;br /&gt;grâce aux pipe et à sed c'est possible en une seule commande:&lt;br /&gt;&lt;b&gt;for i in dtm*; do (mv $i `echo $i|sed 's/dtmgrid\([1-9]\{4\}\)/MNT_\1-/'`); done&lt;/b&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;b&gt;`echo $i|sed 's/dtmgrid\([1-9]\{4\}\)/MNT_\1-/'` &lt;/b&gt;&lt;br /&gt;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...&lt;br /&gt;en gros c'est grâce à une substitution sed " s/avant/apres/ " qui reçoit l'ancien nom de fichier et le convertit selon nos désirs grâce à l'expression régulière qui dit que l'on veut remplacer:&lt;br /&gt;&lt;b&gt;dtmgrid\([1-9]\{4\}\)&lt;/b&gt;&lt;br /&gt;par:&lt;br /&gt;&lt;b&gt;MNT_\1-&lt;/b&gt; &lt;br /&gt;ce qui signifie que dtmgrid sera remplace sans autre par MNT_ et que le contenu de la chaine se trouvant entre parenthèse \( et \) sera à l'arrivée dans la chaine finale utilisé tel quel grâce au \1 et que l'on veut faire suivre cela par un - avant de laisser s'afficher le reste de la chaine en l'état&lt;br /&gt;pour ce qui est du contenu ente parenthèse et bien le [1-9] indique que l'on cherche n'importe quel chiffre entre 1 et 9 et le \{4\} signifie que l'on veut prendre en compte très exactement 4 chiffres.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-1666760305976820212?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/1666760305976820212/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=1666760305976820212' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1666760305976820212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1666760305976820212'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/04/comment-renommer-350-fichiers-dun-coup.html' title='Comment renommer 350 fichiers d&apos;un coup d&apos;un seul sous Linux-bash'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-1187205699236879436</id><published>2010-03-18T17:09:00.002+01:00</published><updated>2010-03-18T19:38:07.649+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='opencl'/><category scheme='http://www.blogger.com/atom/ns#' term='teraflop'/><category scheme='http://www.blogger.com/atom/ns#' term='radeon 5970'/><title type='text'>SuperTux is back : 4.6 TeraFlops avec ATI Radeon™ HD 5970 &amp; OpenCL let's go ride</title><content type='html'>&lt;a href="http://izaak.jellinek.com/tuxes/images/super%20tux.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;img border="0" src="http://izaak.jellinek.com/tuxes/images/super%20tux.png" /&gt;&lt;/a&gt;&lt;br /&gt;Et si en 2010 vous vous&amp;nbsp;offriez&amp;nbsp;&amp;nbsp;votre supercalculateur Linux&amp;nbsp;personnalisé&amp;nbsp; : Viva &amp;nbsp;SuperTux !&lt;br /&gt;Si on se rend sur la&amp;nbsp;&lt;a href="http://www.amd.com/us/products/desktop/graphics/ati-radeon-hd-5000/hd-5970/Pages/ati-radeon-hd-5970-specifications.aspx"&gt;fiche technique de la nouvelle ATI Radeon HD 5970&lt;/a&gt;&amp;nbsp;&amp;nbsp;on découvre que cette nouvelle carte graphique possède une puissance de calcul assez&amp;nbsp;impressionnante&amp;nbsp;de 4.6&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/FLOPS"&gt;TeraFLOPS&lt;/a&gt; &amp;nbsp;par GPU :&lt;br /&gt;&lt;ul style="color: #333333; font-family: Verdana, arial, sans-serif; font-size: 11px; line-height: 18px; list-style-image: initial; list-style-position: initial; list-style-type: disc;"&gt;&lt;li&gt;Processing power (single precision): 4.64 TeraFLOPS&lt;/li&gt;&lt;li&gt;Processing power (double precision): 928 GigaFLOPS&lt;/li&gt;&lt;li&gt;Polygon throughput: 1.45 billion polygons/sec&lt;/li&gt;&lt;/ul&gt;Si on décide d'utiliser toute cette puissance pour &amp;nbsp;qqchose de plus constructif que des FPS et&amp;nbsp;autre jeux stériles et bien on arrive vite à la conclusion que l'on peut avoir un supercalculateur pour pas cher.&lt;br /&gt;&lt;br /&gt;Nvidia avait déjà lancé CUDA mais&amp;nbsp;personnellement, je pense comme dans l'article de&lt;br /&gt;&lt;strong&gt;&lt;a href="http://www.linux-mag.com/author/89" style="color: #006699; text-decoration: none;"&gt;Douglas Eadline, Ph.D.&lt;/a&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;(&lt;a href="http://www.linux-mag.com/id/7725"&gt;GP-GPUs: OpenCL Is Ready For The Heavy Lifting sur Linux Magazine&lt;/a&gt;)&lt;br /&gt;que &amp;nbsp;&lt;a href="http://www.khronos.org/opencl/"&gt;OpenCL&lt;/a&gt; a pas mal de chances d'avoir plus de succès&amp;nbsp;car il s'agit d'un standard qui est supporté par plusieurs vendeurs sur plusieurs&amp;nbsp;types de hardware depuis juin 2008 &amp;nbsp;dans le cadre du &lt;a href="http://www.khronos.org/"&gt;Khronos Group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C'est ainsi qu'armé de votre PC Linux favori avec le tout nouveau&lt;br /&gt;&lt;a href="http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx" style="color: #006699; text-decoration: none;"&gt; ATI Stream SDK v2.01&lt;/a&gt;&amp;nbsp;&amp;nbsp;fraichement installé sur votre Ubuntu 9.10 &amp;nbsp;vous pouvez&amp;nbsp;essayez&amp;nbsp;de&amp;nbsp;taquinez le top10 du&amp;nbsp;&lt;a href="http://www.top500.org/list/2009/11/100"&gt;top500&lt;/a&gt; &amp;nbsp;car si vous utilisez une des nouvelles&amp;nbsp;&lt;a href="http://www.pcinpact.com/actu/news/55699-radeon-hd-5970-xfx-limite.htm"&gt;Radeon HD 5970 Eyefinity 6 chez XFX&lt;/a&gt;&lt;br /&gt;c'est déjà 2 GPU onboard en admettant que vous ayez cassez votre tirelire vous pouvez en mettre&lt;br /&gt;une deuxième en CrossFireX ce qui nous&amp;nbsp;amène&amp;nbsp;à une puissance&amp;nbsp;théorique&amp;nbsp;de 4 x 4.64 TeraFlops = &lt;b&gt; 18.56 TeraFlops &lt;/b&gt; (en sp bien sur mais c'est déjà joli)&amp;nbsp;et pour le double on reste honorable avec un 4 x 0.928 = 3.7 TeraFlos thèorique en double précision.&lt;br /&gt;&lt;br /&gt;En allant voir &amp;nbsp;la liste du top500 on observe que les&amp;nbsp;&amp;nbsp;Rmax (aussi en TeraFlops) atteint par des "supercalculateurs" livrés en 2009 ne sont pas si éloignés de ce chiffre !&lt;br /&gt;Ainsi à la 99ème position on a le BlueGene de l'EPFL livré en 2009 avec&amp;nbsp;16'384 processeurs PowerPC 450 850 MHz (3.4 GFlops) qui totalise un RMax  de 47.73 TeraFlops&lt;br /&gt;Et soyons certains qu'au vu du nombre de processeurs et de la&amp;nbsp;consommation&amp;nbsp;que cela représente il y a de fortes chances qu'avec votre SuperTux vous puissiez concourir au moins dans le &lt;a href="http://www.green500.org/"&gt; Green500&lt;/a&gt; &amp;nbsp;!&lt;br /&gt;Et il y a de fortes chances que vous soyez très haut dans le classement parcequ'avec une consomation de pointe de 294 Watts pour la carte selon la fiche technique de AMD on arrive à&amp;nbsp;&lt;b&gt;15'782 MFLOPS/W !&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-1187205699236879436?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/1187205699236879436/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=1187205699236879436' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1187205699236879436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1187205699236879436'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/03/supertux-is-back-46-teraflops-avec-ati.html' title='SuperTux is back : 4.6 TeraFlops avec ATI Radeon™ HD 5970 &amp; OpenCL let&apos;s go ride'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-2784625997823317213</id><published>2010-02-02T20:57:00.007+01:00</published><updated>2011-09-27T17:11:53.695+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='getchromium'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='chromium'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Download du snapshoot de chromium</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.chromium.org/_/rsrc/1220198801738/config/app/images/customLogo/customLogo.gif?revision=2" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.chromium.org/_/rsrc/1220198801738/config/app/images/customLogo/customLogo.gif?revision=2" /&gt;&lt;/a&gt;&lt;/div&gt;Si vous êtes comme moi, vous aimez avoir &amp;nbsp;&lt;a href="http://www.chromium.org/"&gt;chromium&lt;/a&gt; sur votre distribution Linux favorite. Pers&amp;nbsp;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.&lt;br /&gt;Pour avoir toujours la dernière version j'ai écrit ce petit script perl  &lt;a href="https://docs.google.com/leaf?id=0B1vsvbBz5QdDMmU4NDYyYTYtOGQ4NC00NWU5LWIwNmMtOGQzZTRmYWFmNzYz&amp;amp;authkey=CP2wxBg&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50"&gt;getchromium.pl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;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.&amp;nbsp;Comme j'ai créé sur mon bureau Gnome un lanceur qui pointe sur&lt;br /&gt;&lt;b&gt;~/tools/chromium/chrome-linux/chrome --enable-webgl&lt;/b&gt;&lt;br /&gt;je peux donc toujours lancer la dernière snapshoot de chromium x86_64 disponible sur le buildbot chromium.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-2784625997823317213?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/2784625997823317213/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=2784625997823317213' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/2784625997823317213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/2784625997823317213'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/02/download-du-snapshoot-de-chromium.html' title='Download du snapshoot de chromium'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-77882288218018390</id><published>2010-01-13T12:22:00.001+01:00</published><updated>2010-01-13T14:35:19.314+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disk'/><category scheme='http://www.blogger.com/atom/ns#' term='quota'/><category scheme='http://www.blogger.com/atom/ns#' term='cloning'/><category scheme='http://www.blogger.com/atom/ns#' term='openvz'/><category scheme='http://www.blogger.com/atom/ns#' term='proxmox'/><title type='text'>Clonage d'une machine virtuelle OpenVZ</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.proxmox.com/cms_proxmox/cms/title.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="16" src="http://www.proxmox.com/cms_proxmox/cms/title.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Je suis un heureux administrateur système Linux qui utilise &lt;a href="http://pve.proxmox.com/wiki/Main_Page"&gt;Proxmox comme plateforme de virtualisation&lt;/a&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://static.openvz.org/artwork/openvz-nnn-logo-slogan.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="84" src="http://static.openvz.org/artwork/openvz-nnn-logo-slogan.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;J'utilise passablement les "conteneurs" OpenVZ. Et je venais de me finaliser un&lt;a href="http://wiki.openvz.org/Cloning_VE"&gt; clônage comme indiqué sur le wiki&lt;/a&gt;,&lt;br /&gt;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é&lt;br /&gt;&lt;pre class="brush: shell"&gt;# vzctl stop 101&lt;br /&gt;# vzctl stop 112&lt;br /&gt;# &lt;b&gt;rsync -avz /var/lib/vz/private/101/ /var/lib/vz/private/112/&lt;/b&gt;&lt;br /&gt;# diff /etc/vz/conf/101.conf /etc/vz/conf/112.conf&lt;br /&gt;# 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 &lt;br /&gt;# vzctl start 101&lt;br /&gt;# vzctl start 112&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Par rapport à la démarche proposée sur le wiki, vous aurez constaté que je préfères utiliser le rsync plustôt que la longue ligne avec les deux  tar à travers un pipe&lt;br /&gt;quand au démarrage de ma nouvelle machine virtuelle j'ai constaté une incongruité au niveau des quotas disque en effet l'indication de l'espace dhistorisque encore disponible était complètement faux. Du style j'utilisais 0% de mes 200GB alloué à ce conteneur alors que je lui avais déjà mis 90 GB dans le ventre.&lt;br /&gt;J'ai trouvé l'explication sur le site &lt;a href="http://wiki.openvz.org/Disk_quota%2C_df_and_stat_weird_behaviour"&gt;d'OpenVz&lt;/a&gt; et la solution est simple il fallait réinitialiser le calcul des quotas comme-ceci :&lt;br /&gt;&lt;b&gt;vzquota drop 112&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-77882288218018390?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/77882288218018390/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=77882288218018390' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/77882288218018390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/77882288218018390'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/01/clonage-dune-machine-virtuelle-openvz.html' title='Clonage d&apos;une machine virtuelle OpenVZ'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-6331204031346771289</id><published>2010-01-04T17:48:00.004+01:00</published><updated>2010-01-04T17:56:59.442+01:00</updated><title type='text'>Utiliser curl pour récupérer des logs sur un serveur Microsoft IIS avec l'authentification ntlm</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://curl.haxx.se/ds-curlicon.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://curl.haxx.se/ds-curlicon.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;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 &lt;a href="http://curl.haxx.se/"&gt;curl&lt;/a&gt; (en lieu et place de wget) &lt;br /&gt;En effet curl (via libcurl) supporte toute les variantes d'authentification dont certaines spécifiques à Microsoft comme le fameux ntlm.&lt;br /&gt;Pour vérifier si vous avez déjà curl vous pouvez exécuter un simple&lt;br /&gt;dpkg -l |grep curl&lt;br /&gt;Ce qui dans mon cas donne sur une Ubuntu 9.1 :&lt;br /&gt;&lt;pre&gt;ii  curl                 7.19.5-1ubuntu2       Get a file from an HTTP, HTTPS or FTP server&lt;br /&gt;ii  libcurl3             7.19.5-1ubuntu2       Multi-protocol file transfer library (OpenSS&lt;br /&gt;ii  libcurl3-gnutls      7.19.5-1ubuntu2       Multi-protocol file transfer library (GnuTLS&lt;br /&gt;ii  libcurl4-gnutls-dev  7.19.5-1ubuntu2       Development files and documentation for libc&lt;br /&gt;ii  php5-curl            5.2.10.dfsg.1-2ubuntu6.3  CURL module for php5&lt;br /&gt;&lt;/pre&gt;Vous pouvez le cas échéant installer ces paquets avec un gestionnaire de paquets graphique (tel synaptic) ou avec un simple :&lt;br /&gt;&lt;code&gt;sudo apt-get install curl&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;voici un exemple d'utilisation :&lt;br /&gt;&lt;code&gt;&lt;b&gt;curl --proxy '' --verbose --ntlm --netrc http://myserver.mydomain.ch/iislog/&lt;/b&gt;&lt;/code&gt;&lt;br /&gt;toutes les nombreuses options sont documentées dans les "man" pages ou &lt;a href="http://curl.haxx.se/docs/manpage.html"&gt;en ligne sur le site de curl&lt;/a&gt; &lt;br /&gt;Dans cet exemple j'utilise notamment :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;--proxy '' : pour forcer la non-utilisation du proxy d'entreprise, en effet dans mon cas j'ai une variable d'environnement du style&amp;nbsp; "http_proxy=http://monproxy.mondomaine.ch:8080/" qui existe et curl et assez futé pour l'utiliser par défaut, sauf que dans mon cas je veux aller sur un serveur en interne d'ou mon besoin de désactivez l'usage du proxy&lt;/li&gt;&lt;li&gt;--verbose : pour avoir quelques infos utile en cas de problèmes, pratiquement cette option n'est que rarement utilisée en production&lt;/li&gt;&lt;li&gt;--ntlm&amp;nbsp; : dans ce cas je force l'utilisation de l'autentification ntlm, j'aurais pu utiliser --anyauth et curl aurait essayé différent mode d'authentification jusqu'à trouver le bon (dans ce cas --verbose prend tout son sens) en production il est de bon ton d'utiliser directement le bon mode ( &lt;a class="emphasis" href="http://curl.haxx.se/docs/manpage.html#--basic"&gt;--basic&lt;/a&gt;, &lt;a class="emphasis" href="http://curl.haxx.se/docs/manpage.html#--digest"&gt;--digest&lt;/a&gt;, &lt;a class="emphasis" href="http://curl.haxx.se/docs/manpage.html#--ntlm"&gt;--ntlm&lt;/a&gt;, and &lt;a class="emphasis" href="http://curl.haxx.se/docs/manpage.html#--negotiate"&gt;--negotiate&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://curl.haxx.se/docs/manpage.html#-n--netrc"&gt;--netrc&lt;/a&gt; : cette option demande à curl de scanner le contenu du fichier  .netrc (_netrc on Windows) pour connaitre les utilisateurs et les mot de passes pour un serveur donné en gros le format du fichier est le suivant pour chaque ligne on a : &lt;b&gt;machine monserveur.mondomaine.com login monusername password monmotdepassesecret.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&amp;nbsp;  &lt;/ul&gt;&lt;br /&gt;D'ailleurs il est utile de préciser pour cette dernière option que ce fichier .netrc doit se trouver dans votre répertoire HOME, et que donc curl va voir ou se trouve votre HOME en regardant dans le contenu de la &lt;b&gt;variable d'environnement HOME. (par exemple HOME=/home/cgil)&amp;nbsp;&lt;/b&gt;&lt;br /&gt;si d'aventure vous êtes sur une Ubuntu ou un autre dérivé de Debian, il y a des fortes chances que vous usiez et abusiez du "sudo qqcchose" or dans ce cas il faut juste prendre garde au fait que bien qu'on agisse en tant que USER root il se trouve que dans ces distributions la variable d'environnement HOME reste elle fixée à votre HOME de simple mortel et utilisateur lambda.&lt;br /&gt;Ce qui fait que curl ou un shell script utilisant curl avec l'option --netrc ira chercher le fichier --netrc dans votre HOME en non pas dans le HOME théorique de /root comme on pourrait s'y attendre pour vérifer cela il suffit de :&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;cgil@neotux:~$ env|grep -E 'USER|HOME'&lt;br /&gt;USER=cgil&lt;br /&gt;USERNAME=cgil&lt;br /&gt;JAVA_HOME=/opt/jdk/&lt;br /&gt;HOME=/home/cgil&lt;br /&gt;cgil@neotux:~$ sudo env|grep -E 'USER|HOME'&lt;br /&gt;HOME=/home/cgil&lt;br /&gt;USER=root&lt;br /&gt;USERNAME=root&lt;br /&gt;SUDO_USER=cgil&lt;br /&gt;&lt;/pre&gt;ceci  a parfois des effets de bords fort génants et je trouve personnellement que le HOME devrait toujours suivre le USER&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-6331204031346771289?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/6331204031346771289/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=6331204031346771289' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6331204031346771289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6331204031346771289'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2010/01/utiliser-curl-pour-recuperer-des-logs.html' title='Utiliser curl pour récupérer des logs sur un serveur Microsoft IIS avec l&apos;authentification ntlm'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-6161884194449640107</id><published>2009-12-17T17:17:00.001+01:00</published><updated>2009-12-17T17:19:55.722+01:00</updated><title type='text'>Lire un site web en mode offline grâce à wget</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.gnu.org/graphics/heckert_gnu.small.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.gnu.org/graphics/heckert_gnu.small.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Il existe plusieurs "aspirateurs" de site web, il y a même une extension comme &lt;a href="http://amb.vis.ne.jp/mozilla/scrapbook/"&gt;scrapbook&lt;/a&gt; pour &lt;a href="https://addons.mozilla.org/firefox/addon/427"&gt;firefox&lt;/a&gt; qui permettent de lire des infos ou une documentation en ligne sur votre netbook même sans connexion réseau&lt;br /&gt;mais je dois dire que en ce qui me concerne l'efficacité d'un outil tel que &lt;a href="http://www.gnu.org/software/wget/"&gt;GNU Wget&lt;/a&gt; reste le top du must absolu ainsi avec un simple :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;b&gt;wget -N -r --no-parent --convert-links http://www.example.com/projects/doc/&lt;/b&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;c'est tout le contenu du répertoire doc sur le site www.example.com que vous allez pouvoir consulter offline. &lt;a href="http://www.gnu.org/software/wget/manual/html_node/index.html"&gt;La documentation de wget&lt;/a&gt; est disponible en ligne l'option -r signifie que la récursion est active, l'option&amp;nbsp;&lt;b&gt;--no-parent&lt;/b&gt;&amp;nbsp;évite d'aspirer les répertoires parents et &lt;b&gt;--convert-links &lt;/b&gt;permet de créer une copie contenant des hyperliens pointant correctement&lt;br /&gt;Essayez ! Vous verrez que vous ne pourrez plus&amp;nbsp;vous en passer !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-6161884194449640107?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/6161884194449640107/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=6161884194449640107' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6161884194449640107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6161884194449640107'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/12/lire-un-site-web-en-mode-offline-grace.html' title='Lire un site web en mode offline grâce à wget'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-1535201165164172136</id><published>2009-11-23T12:06:00.001+01:00</published><updated>2009-11-23T12:07:50.414+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pavé_numérique'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='[shift]+[numLock]'/><title type='text'>Pavé numérique innopérant ou bloqué  sous Linux Ubuntu (Avec Gnome)</title><content type='html'>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...&lt;br /&gt;Bon et ben je vous épargne de chercher vainement&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Support de votre clavier S520 Logitech (rien à voir il fonctionne bien au boot) &lt;/li&gt;&lt;li&gt;Support des touches multimedia (la touce calculatrice n'y est pour rien)&lt;/li&gt;&lt;li&gt;L'évt influence de la conjonction de Mars et Saturne...&lt;/li&gt;&lt;/ol&gt;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)&lt;br /&gt;et vous avez malencontreusement utilisez la combinaison de touche&lt;br /&gt;&lt;b&gt;[Shift]+[Num Lock]&lt;/b&gt;&lt;br /&gt;qui a pour effet sous Gnome de désactiver totalement le pavé numérique&lt;br /&gt;&lt;b&gt; &lt;/b&gt;Donc il suffit de refaire cette combinaison de touche et tout rentrera dans l'ordre...&lt;br /&gt;J'ai perdu une énergie à cause de ce truc...&lt;br /&gt;Me demande bien ce qui pouvais se passer dans l'esprit du gars qui a voulu mettre cette option dans le code du bureau Gnome alors que la touche NumLock fait ça très bien depuis des années, j'avoue que je comprend pas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-1535201165164172136?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/1535201165164172136/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=1535201165164172136' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1535201165164172136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1535201165164172136'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/11/pave-numerique-innoperant-ou-bloque.html' title='Pavé numérique innopérant ou bloqué  sous Linux Ubuntu (Avec Gnome)'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-6120013470713325653</id><published>2009-11-11T14:38:00.001+01:00</published><updated>2009-11-11T14:39:50.469+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='PS1'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Changer le prompt en ligne de commande sous Bash</title><content type='html'>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.&lt;br /&gt;Ce prompt peut ressembler à qqch du style :&lt;br /&gt;&lt;pre class="brush: bash"&gt;cfred@tuxhost:/var/log$ &lt;/pre&gt;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&lt;br /&gt;&lt;pre class="brush: bash"&gt;cfred@tuxhost:/var/log$ SAVE=$PS1&lt;br /&gt;&lt;br /&gt;cfred@tuxhost:/var/log$ PS1="\u:\W $ "&lt;br /&gt;cfred:log $ echo "Pour restaurer la valeur d'origine il suffira alors de faire"&lt;br /&gt;cfred:log $ PS1=$SAVE&lt;br /&gt;&lt;/pre&gt;Il y a plusieurs caractères d'échappement qui peuvent être utilisé comme par exemple :&lt;br /&gt;\d     pour la   date&lt;br /&gt;\h     le nom du host jusqu'au premier point (sans le suffixe dns)&lt;br /&gt;\H     le nom du host complet&lt;br /&gt;\t     l'heure au format 24h HH:MM:SS &lt;br /&gt;\T     l'heure au format 12h HH:MM:SS &lt;br /&gt;\u     le nom d'utilisateur courant&lt;br /&gt;\w     le chemin complet sur le répertoire courant&lt;br /&gt;\W     le répertoire courant&lt;br /&gt;la liste exhaustive est disponible sur la doc bash&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-6120013470713325653?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/6120013470713325653/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=6120013470713325653' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6120013470713325653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6120013470713325653'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/11/changer-le-prompt-en-ligne-de-commande.html' title='Changer le prompt en ligne de commande sous Bash'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-5016312725752387377</id><published>2009-10-09T11:53:00.007+02:00</published><updated>2010-04-16T16:52:09.732+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utf8'/><category scheme='http://www.blogger.com/atom/ns#' term='initdb'/><category scheme='http://www.blogger.com/atom/ns#' term='LC_CTYPE'/><category scheme='http://www.blogger.com/atom/ns#' term='latin1'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>postgresql et les encodages</title><content type='html'>Sur une distribution récente avec la base de données &lt;a href="http://www.postgresql.org/about/"&gt;Postgresql&lt;/a&gt; je n'arrivais pas à créer une nouvelle BD avec un encodage LATIN1.&lt;br /&gt;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 :&lt;br /&gt;&lt;pre class="brush: bash"&gt;/usr/lib/postgresql/8.3/bin/pg_controldata /var/lib/postgresql/8.3/main/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dans mon cas j'avais : &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LC_COLLATE:fr_CH.UTF-8&lt;br /&gt;LC_CTYPE: fr_CH.UTF-8&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;pre class="brush: bash"&gt;su postgres -c 'createdb -E LATIN1 -O cgdb goeland'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On se voit recevoir un message fort peu sympathique en forme de fin de non-recevoir :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;createdb: database creation failed: ERREUR:  l'encodage LATIN1 ne correspond pas à la locale fr_CH.UTF-8 du serveur&lt;br /&gt;DETAIL:  Le paramètre LC_CTYPE du serveur nécessite l'encodage UTF8.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;L'explication se trouve dans la &lt;a href="http://www.postgresql.org/docs/8.3/static/multibyte.html"&gt;documentation postgresql&lt;/a&gt; Si on veut pouvoir lor de la création de base de données utiliser n'importe quel encodage il faut pour le initdb utiliser "C" ou "POSIX" pour le locale par défaut&lt;br /&gt;Donc la solution consiste a casser le cluster par défaut  (n'oubliez pas de backupez avant)&lt;br /&gt;&lt;b&gt;Hum Encore une fois ATTENTION ne lancez pas un pg_dropcluster sur un serveur en prod avec des données car il est clair que cela détruit de façon irrémédiable vos données&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;pg_dropcluster --stop 8.3 main&lt;br /&gt;localedef -f ISO-8859-1 -i fr_CH fr_CH.ISO-8859-1&lt;br /&gt;export LANG="fr_CH.iso88591"&lt;br /&gt;pg_createcluster --locale fr_CH.iso88591 8.3 main&lt;br /&gt;&lt;/pre&gt;Dans la foulée on fixe le mot de passe de postgresql avec :&lt;br /&gt;&lt;pre class="brush: bash"&gt;su postgres&lt;br /&gt;psql template1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: sql"&gt;ALTER USER postgres WITH PASSWORD '123456';&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Et voila maintenant on peut créer une BD en LATIN1 avec&lt;br /&gt;&lt;pre class="brush: bash"&gt;su -c "createdb -E LATIN1 mabellebdenlatin1" postgres &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5016312725752387377?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5016312725752387377/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5016312725752387377' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5016312725752387377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5016312725752387377'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/10/postgresql-et-les-encodages.html' title='postgresql et les encodages'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-8015301127799036228</id><published>2009-06-09T11:27:00.004+02:00</published><updated>2009-06-09T12:33:14.724+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><title type='text'>Utiliser rsync pour syncroniser de gros volumes de données</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.samba.org/rsync/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 200px;" src="http://www.samba.org/rsync/newrsynclogo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;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".&lt;br /&gt;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).&lt;br /&gt;Cet utilitaire du projet samba maintenu par Wayne Davison est excellent pour les transferts de fichier en mode incrémental.&lt;br /&gt;Il y a une excellente documentation et de nombreux &lt;a href="http://www.samba.org/rsync/examples.html"&gt;exemples&lt;/a&gt; sur  le site du projet &lt;a href="http://www.samba.org/rsync/"&gt;http://www.samba.org/rsync/&lt;/a&gt;.&lt;br /&gt;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é (&lt;span style="font-weight: bold;"&gt;yum install rsync&lt;/span&gt;  rpm sous fedora &amp;amp; co, et &lt;span style="font-weight: bold;"&gt;apt-get install rsync&lt;/span&gt; pour debian, ubuntu et dérivés)&lt;br /&gt;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éodonnées sur plusieurs serveurs de guichet cartographique (mapserver).&lt;br /&gt;Sur le serveur principal j’ai installé et configuré le démon rsyncd (service linux)&lt;br /&gt;Voici le contenu de mon fichier /etc/rsync.conf sur le serveur principal :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;# /etc/rsyncd.conf&lt;br /&gt;&lt;br /&gt;# Minimal configuration file for rsync daemon&lt;br /&gt;# See rsync(1) and rsyncd.conf(5) man pages for help&lt;br /&gt;&lt;br /&gt;# This line is required by the /etc/init.d/rsyncd script&lt;br /&gt;pid file = /var/run/rsyncd.pid&lt;br /&gt;uid = nobody&lt;br /&gt;gid = nobody&lt;br /&gt;pid file = /var/run/rsyncd.pid&lt;br /&gt;use chroot = no&lt;br /&gt;read only = yes&lt;br /&gt;max connections = 15&lt;br /&gt;log file = /var/log/rsync.log&lt;br /&gt;transfer logging = yes&lt;br /&gt;log format = %t %a %o %m %f %b&lt;br /&gt;syslog facility = local3&lt;br /&gt;timeout = 300&lt;br /&gt;dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.jpg *.tif&lt;br /&gt;[dataweb]&lt;br /&gt;        path = /data/dataweb&lt;br /&gt;        comment = Calculator dataweb&lt;br /&gt;        hosts allow = 192.168.50.12,192.168.50.235,192.168.50.148&lt;br /&gt;[geodata]&lt;br /&gt;        path = /data/geodata&lt;br /&gt;        comment = Calculator geodata&lt;br /&gt;        hosts allow = 192.168.50.12,192.168.50.235,192.168.50.148&lt;br /&gt;&lt;br /&gt;[goelanddocs]&lt;br /&gt;        path = /data/goelanddocs&lt;br /&gt;        comment = Goeland Documents&lt;br /&gt;        hosts allow = 192.168.50.12,192.168.50.235,192.168.50.148&lt;br /&gt;[goelandlogs]&lt;br /&gt;        path = /backup/weblogs/goeland&lt;br /&gt;        comment = Goeland Logs&lt;br /&gt;        hosts allow = 192.168.50.12,192.168.50.235,192.168.50.11,192.168.50.148&lt;br /&gt;&lt;br /&gt;///////////////////////////////////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Typiquement ce qui est important c’est de retreindre l’accès aux adresses ip des serveurs qui doivent venir se synchroniser avec hosts allow dans chaque section&lt;br /&gt;Une autre sécurité que j’ai pris dans mon cas c’est que le serveur principal n’expose pas la fonction écriture (mode read only =yes)&lt;br /&gt;En gros l’idée c’est qu’on a une section par répertoire que l’on veut pouvoir synchroniser avec des droits différents&lt;br /&gt;A partir du moment ou le serveur tourne (/etc/init.d/rsyncd start)&lt;br /&gt;Avec un &lt;span style="font-weight: bold;"&gt;netstat -anp&lt;/span&gt; on peut vérifier que le démon « écoute » bien sur le port 873 (en général c’est celui la par défaut)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      19138/rsync&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;On peut ensuite aller tenter une synchronisation depuis une autre bécane avec la commande rsync.&lt;br /&gt;En général la première fois il faut laisser le temps pour que la copie des données s'effectue, mais dés la deuxième fois, il n'y a que ce qui a changé qui est copié. Et il s'agit bien de différence binaire ce qui fait que pour des volumes de plus de 80 GB, j'arrive à un temps de syncro inférieur à la minute (temps qui peut bien sur varier s'il y a de gros volumes de données modifiées)&lt;br /&gt;Voici un exemple de script qui est configuré dans crontab pour s'éxécuter toutes les nuits sur un serveur qui doit contenir une copie de ces géodonnées :&lt;br /&gt;&lt;span&gt;&lt;span class="S2"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span class="S8"&gt;RSYNC&lt;/span&gt;&lt;span class="S7"&gt;=&lt;/span&gt;&lt;span class="S5"&gt;"/usr/bin/rsync"&lt;/span&gt;&lt;br /&gt;&lt;span class="S8"&gt;LOG&lt;/span&gt;&lt;span class="S7"&gt;=&lt;/span&gt;&lt;span class="S5"&gt;"/root/log/SyncCalculator4.log"&lt;/span&gt;&lt;br /&gt;&lt;span class="S2"&gt;#--archive implies -rlptgoD or  --recursive --links --perms --times --group --owner --devices&lt;/span&gt;&lt;br /&gt;&lt;span class="S8"&gt;OPTS&lt;/span&gt;&lt;span class="S7"&gt;=&lt;/span&gt;&lt;span class="S5"&gt;"--verbose --archive --stats --partial --delete --timeout=300"&lt;/span&gt;&lt;br /&gt;&lt;span class="S8"&gt;SRC1&lt;/span&gt;&lt;span class="S7"&gt;=&lt;/span&gt;&lt;span class="S5"&gt;"rsync://calculator4/dataweb"&lt;/span&gt;&lt;br /&gt;&lt;span class="S8"&gt;DST1&lt;/span&gt;&lt;span class="S7"&gt;=&lt;/span&gt;&lt;span class="S5"&gt;"/new_data/calculator4/dataweb"&lt;/span&gt;&lt;br /&gt;&lt;span class="S8"&gt;SRC2&lt;/span&gt;&lt;span class="S7"&gt;=&lt;/span&gt;&lt;span class="S5"&gt;"rsync://calculator4/geodata"&lt;/span&gt;&lt;br /&gt;&lt;span class="S8"&gt;DST2&lt;/span&gt;&lt;span class="S7"&gt;=&lt;/span&gt;&lt;span class="S5"&gt;"/new_data/calculator4/geodata"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S4"&gt;echo&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S5"&gt;"****Started update at"&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S11"&gt;`date`&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;&gt;&gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${LOG}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S3"&gt;2&lt;/span&gt;&lt;span class="S7"&gt;&gt;&amp;amp;&lt;/span&gt;&lt;span class="S3"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="S4"&gt;echo&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S5"&gt;"**re-rsyncing the calculator dataweb tree"&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;&gt;&gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${LOG}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S3"&gt;2&lt;/span&gt;&lt;span class="S7"&gt;&gt;&amp;amp;&lt;/span&gt;&lt;span class="S3"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="S10"&gt;${RSYNC}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${OPTS}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;--&lt;/span&gt;&lt;span class="S8"&gt;exclude&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S6"&gt;'phpTempSession/'&lt;/span&gt;&lt;span class="S0"&gt;  &lt;/span&gt;&lt;span class="S10"&gt;${SRC1}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${DST1}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;&gt;&gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${LOG}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S3"&gt;2&lt;/span&gt;&lt;span class="S7"&gt;&gt;&amp;amp;&lt;/span&gt;&lt;span class="S3"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="S4"&gt;echo&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S5"&gt;"**re-rsyncing the calculator geodata tree"&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;&gt;&gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${LOG}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S3"&gt;2&lt;/span&gt;&lt;span class="S7"&gt;&gt;&amp;amp;&lt;/span&gt;&lt;span class="S3"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;span class="S10"&gt;${RSYNC}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${OPTS}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${SRC2}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${DST2}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;&gt;&gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${LOG}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S3"&gt;2&lt;/span&gt;&lt;span class="S7"&gt;&gt;&amp;amp;&lt;/span&gt;&lt;span class="S3"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="S4"&gt;echo&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S5"&gt;"**End: "&lt;/span&gt;&lt;span class="S11"&gt;`date`&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S7"&gt;&gt;&gt;&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S10"&gt;${LOG}&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;span class="S3"&gt;2&lt;/span&gt;&lt;span class="S7"&gt;&gt;&amp;amp;&lt;/span&gt;&lt;span class="S3"&gt;1&lt;/span&gt;&lt;span class="S0"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Rsync est un outil vraiment formidable et qui devient vite indispensable quand on a des besoins de syncro sur des volumes de données important et/ou sur des fichiers de taille importantes.&lt;br /&gt;Et il faut bien sur garder à l'esprit que l'on peut l'utiliser sans avoir configuré un serveur rsync sur un des côtés du transfert. Ainsi comme expliqué dans le &lt;span style="font-weight:bold;"&gt;man rsync&lt;/span&gt; avec un simple :&lt;br /&gt;&lt;code&gt;rsync -avz serveur1:/data/toto /data/tmp&lt;/code&gt;&lt;br /&gt;On va transférer récursivement tous les fichiers du répertoire /data/toto sur le serveur1 dans le répertoire /data/tmp sur la machine locale ou on execute la commande. Ces fichiers seront transferes en mode "archive" ce qui assure que liens symboliques, attributs, permissions etc. soit préservés pendant le transfert. En plus avec l'option "z" la compression sera utilisée pour réduire la taille du transfert.&lt;br /&gt;Mais rien ne remplace la lecture du man et pour prendre conscience des nombreuses options disponibles tel que --exclude=PATTERN qui permet de tout copier sauf certains types de fichiers &lt;br /&gt;&lt;br /&gt;Enfin voila pour l'introduction, j'éspère que cela vous donne envie d'en savoir plus, en tout cas en ce qui me concerne cette commande est pour moi réellement indispensable et on la retrouve dans plusieurs de mes scripts de réplications de données. Alors "Bonne découverte" !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-8015301127799036228?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/8015301127799036228/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=8015301127799036228' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/8015301127799036228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/8015301127799036228'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/06/utiliser-rsync-pour-syncroniser-de-gros.html' title='Utiliser rsync pour syncroniser de gros volumes de données'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-6659780855403395382</id><published>2009-06-04T13:27:00.003+02:00</published><updated>2009-06-09T12:55:37.757+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='liveusb'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Avoir une belle distro SliTaz sur sa clé USB</title><content type='html'>Avec l'utilitaire &lt;a href="http://unetbootin.sourceforge.net/"&gt;UNetbootin&lt;/a&gt; on peut intaller en quelques click de souris une chouette Distribution Linux comme par exemple la fameuse distro &lt;a href="http://www.slitaz.org/fr/"&gt;SliTaz&lt;/a&gt; (30 mb de concentré de bonheur) sur sa clé USB favorite&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-6659780855403395382?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/6659780855403395382/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=6659780855403395382' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6659780855403395382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6659780855403395382'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/06/avoir-une-belle-distro-slitaz-sur-sa.html' title='Avoir une belle distro SliTaz sur sa clé USB'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-482236043932019061</id><published>2009-05-19T13:57:00.004+02:00</published><updated>2009-05-19T14:33:50.477+02:00</updated><title type='text'>Comment comparer (et connaitre) les paquets debian installés sur 2 serveurs</title><content type='html'>Je me suis retrouvé dans la situation ou je voulais connaitre la liste des paquets installés sur une Debian 5.0 Lenny et comparer cette liste avec ce qui était sur un autre serveur.&lt;br /&gt;Tout d'abord pour obtenir une liste exhaustive des paquets  présent sur un serveur Debian j'utilise l'excellent &lt;span style="font-weight: bold;"&gt;dpkg&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;code&gt;dpkg -l&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;va donner une liste des paquets installés par ordre alphabétique avec version et description et status, qqch du style:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;gocarto01:~# dpkg -l&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Desired=Unknown/Install/Remove/Purge/Hold&lt;br /&gt;| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend&lt;br /&gt;|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)&lt;br /&gt;||/ Name                              Version                           Description&lt;br /&gt;+++-=================================-=================================-==================================================================================&lt;br /&gt;ii  adduser                           3.110                             add and remove users and groups&lt;br /&gt;ii  apache2                           2.2.9-10+lenny2                   Apache HTTP Server metapackage&lt;br /&gt;ii  apache2-doc                       2.2.9-10+lenny2                   Apache HTTP Server documentation&lt;br /&gt;ii  apache2-mpm-prefork               2.2.9-10+lenny2                   Apache HTTP Server - traditional non-threaded model&lt;br /&gt;ii  apache2-utils                     2.2.9-10+lenny2                   utility programs for webservers&lt;br /&gt;ii  apache2.2-common                  2.2.9-10+lenny2                   Apache HTTP Server common files&lt;br /&gt;ii  apt                               0.7.20.2+lenny1                   Advanced front-end for dpkg&lt;br /&gt;ii  apt-file                          2.1.5                             APT package searching utility -- command-line interface&lt;br /&gt;ii  apt-utils                         0.7.20.2+lenny1                   APT utility programs&lt;br /&gt;ii  base-files                        5lenny2                           Debian base system miscellaneous files&lt;br /&gt;ii  base-passwd                       3.5.20                            Debian base system master password and group files&lt;br /&gt;ii  bash                              3.2-4                             The GNU Bourne Again SHell&lt;br /&gt;rc  bind9                             1:9.5.1.dfsg.P1-2                 Internet Domain Name Server&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;avec cette belle liste que l'on sauve dans un fichier en faisant une simple redirection&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dpkg -l &gt;package-list_serveur1.txt&lt;/span&gt;&lt;br /&gt;Ensuite sur l'autre serveur on procéde de même&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dpkg -l &gt;package-list-serveur2.txt&lt;/span&gt;&lt;br /&gt;Et on recupére la liste précédente par exemple avec un scp (outils fourni avec ssh)&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;scp serveur1:package-list_serveur1.txt .&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;Et finalement un simple diff entre les 2 fichiers et on obtient la liste des paquets présents d'un côté ou de l'autre :&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;code style="font-weight: bold;"&gt;diff package-list-serveur2.txt package-list_serveur1.txt  &lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&gt; ii  php5-gd                         5.2.6.dfsg.1-1+lenny3    GD module for php5&lt;br /&gt;264a270&lt;br /&gt;&gt; ii  php5-sybase                     5.2.6.dfsg.1-1+lenny3    Sybase / MS SQL Server module for php5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ainsi dans cet exemple je peux constater qu'il me manque les paquets php5-gd et php5-sybase  sur le serveur2 (car il ne sont présent que dans la liste générée sur le serveur1.&lt;br /&gt;Bon courage si vous essayez de faire de même sous Microsoft...&lt;br /&gt;Bien entendu rien ne vous empêche de filtrer cette liste avec un grep&lt;br /&gt;Ainsi avec un :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;gocarto01:~# dpkg -l |grep php&lt;br /&gt;ii  libapache2-mod-php5             5.2.6.dfsg.1-1+lenny3    server-side, HTML-embedded scripting languag&lt;br /&gt;ii  php-pear                        5.2.6.dfsg.1-1+lenny3    PEAR - PHP Extension and Application Reposit&lt;br /&gt;ii  php5-cli                        5.2.6.dfsg.1-1+lenny3    command-line interpreter for the php5 script&lt;br /&gt;ii  php5-common                     5.2.6.dfsg.1-1+lenny3    Common files for packages built from the php&lt;br /&gt;ii  php5-gd                         5.2.6.dfsg.1-1+lenny3    GD module for php5&lt;br /&gt;ii  php5-pgsql                      5.2.6.dfsg.1-1+lenny3    PostgreSQL module for php5&lt;br /&gt;ii  php5-sybase                     5.2.6.dfsg.1-1+lenny3    Sybase / MS SQL Server module for php5&lt;br /&gt;ii  php5-xsl                        5.2.6.dfsg.1-1+lenny3    XSL module for php5&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;un man dpkg vous montrera plein d'autre possibilités de ce formidable outil. Ainsi si vous voulez connaitre la liste des fichiers  installés par le paquetage postgresql-8.3-postgis il vous suffit de lancer un :&lt;br /&gt;dpkg -L postgresql-8.3-postgis&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;gocarto01:~# dpkg -L postgresql-8.3-postgis&lt;br /&gt;/.&lt;br /&gt;/usr&lt;br /&gt;/usr/share&lt;br /&gt;/usr/share/doc&lt;br /&gt;/usr/share/doc/postgresql-8.3-postgis&lt;br /&gt;/usr/share/doc/postgresql-8.3-postgis/changelog.gz&lt;br /&gt;/usr/share/doc/postgresql-8.3-postgis/copyright&lt;br /&gt;/usr/share/doc/postgresql-8.3-postgis/README.Debian.gz&lt;br /&gt;/usr/share/doc/postgresql-8.3-postgis/changelog.Debian.gz&lt;br /&gt;/usr/share/postgresql-8.3-postgis&lt;br /&gt;/usr/share/postgresql-8.3-postgis/lwpostgis_upgrade.sql&lt;br /&gt;/usr/share/postgresql-8.3-postgis/lwpostgis.sql&lt;br /&gt;/usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql&lt;br /&gt;/usr/lib&lt;br /&gt;/usr/lib/postgis&lt;br /&gt;/usr/lib/postgis/1.3.3&lt;br /&gt;/usr/lib/postgis/1.3.3/postgres&lt;br /&gt;/usr/lib/postgis/1.3.3/postgres/8.3&lt;br /&gt;/usr/lib/postgis/1.3.3/postgres/8.3/lib&lt;br /&gt;/usr/lib/postgis/1.3.3/postgres/8.3/lib/liblwgeom.so.1.3&lt;br /&gt;/usr/lib/postgresql&lt;br /&gt;/usr/lib/postgresql/8.3&lt;br /&gt;/usr/lib/postgresql/8.3/lib&lt;br /&gt;/usr/lib/postgresql/8.3/lib/liblwgeom.so.1&lt;br /&gt;/usr/lib/postgresql/8.3/lib/liblwgeom.so&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-482236043932019061?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/482236043932019061/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=482236043932019061' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/482236043932019061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/482236043932019061'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/05/comment-comparer-et-connaitre-les.html' title='Comment comparer (et connaitre) les paquets debian installés sur 2 serveurs'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-510601238327907968</id><published>2009-05-05T16:56:00.004+02:00</published><updated>2009-05-05T17:45:00.780+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='lvm'/><category scheme='http://www.blogger.com/atom/ns#' term='openvz'/><category scheme='http://www.blogger.com/atom/ns#' term='proxmox'/><title type='text'>Augmenter la taille d'un volume logique LVM2 online</title><content type='html'>J'ai installé proxmox sur un de mes serveurs contenant 2 disques physiques en miroir RAID1 (raid hard avec un controlleur PERC)  vu comme /dev/sda d'une taille de 73GB par Linux.&lt;br /&gt;Proxmox installé avec un partitionnment par défaut j'avais au final le partitionnment suivant sur le disque :&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;calc0:/var/lib/vz# fdisk /dev/sda -l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Disk /dev/sda: 73.5 GB, 73555509248 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;255 heads, 63 sectors/track, 8942 cylinders&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;   Device Boot      Start         End      Blocks   Id  System&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;/dev/sda1   *           1          66      524288   83  Linux&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;/dev/sda2              66        8942    71302295   8e  Linux LVM&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;et au niveau du LVM j'avais les infos suivantes au niveau  physique, de "volume group" et logique:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;calc0nokvm:/var/lib/vz# pvdisplay&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  --- Physical volume ---&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  PV Name               /dev/sda2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Name               pve&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  PV Size               68.00 GB / not usable 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Allocatable           yes (but full)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  PE Size (KByte)       4096&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Total PE              17407&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Free PE               0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Allocated PE          17407&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  PV UUID               3bzRCT-gRWz-7EGo-IMAl-rIAq-SJDz-rLqOOd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;calc0nokvm:/var/lib/vz# vgdisplay&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  --- Volume group ---&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Name               pve&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  System ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Format                lvm2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Metadata Areas        1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Metadata Sequence No  4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Access             read/write&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Status             resizable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  MAX LV                0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Cur LV                3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Open LV               3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Max PV                0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Cur PV                1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Act PV                1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Size               68.00 GB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  PE Size               4.00 MB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Total PE              17407&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Alloc PE / Size       16385 / 64.00 GB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Free  PE / Size       1022 / 3.99 GB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG UUID               qbzjFv-rYTt-pRGE-FfUP-BgXr-z54a-5QNmXh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;calc0nokvm:/var/lib/vz# lvdisplay&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  --- Logical volume ---&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Name                /dev/pve/swap&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Name                pve&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV UUID                cuS75E-ppYt-Rk1H-8CyL-Hhc9-Gs3b-v5yMUW&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Write Access        read/write&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Status              available&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  # open                 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Size                7.00 GB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Current LE             1792&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Segments               1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Allocation             inherit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Read ahead sectors     0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Block device           254:0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  --- Logical volume ---&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Name                /dev/pve/root&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Name                pve&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV UUID                gZ4825-OGRN-vqvm-9JUF-1FvK-II91-feQDcg&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Write Access        read/write&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Status              available&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  # open                 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Size                17.00 GB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Current LE             4352&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Segments               1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Allocation             inherit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Read ahead sectors     0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Block device           254:1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  --- Logical volume ---&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Name                /dev/pve/data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  VG Name                pve&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV UUID                uovK3Q-gOP8-svnT-TxHg-CA3X-Cek8-FaLZG1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Write Access        read/write&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Status              available&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  # open                 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  LV Size                40.00 GB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Current LE             10241&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Segments               1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Allocation             inherit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Read ahead sectors     0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  Block device           254:2&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Ce qui fait qu'il ne me restait pas grand chose pour créer mes machines virtuelles OpenVz car un simple df m'indiquait qu'il ne me restait guère plus que 19GB de libre:&lt;br /&gt;calc0nokvm:/var/lib/vz# &lt;span style="font-weight: bold;"&gt;df -hT&lt;/span&gt;&lt;br /&gt;Filesystem    Type    Size  Used Avail Use% Mounted on&lt;br /&gt;/dev/pve/root ext3     17G  750M   16G   5% /&lt;br /&gt;tmpfs        tmpfs    3.9G     0  3.9G   0% /lib/init/rw&lt;br /&gt;udev         tmpfs     10M   64K   10M   1% /dev&lt;br /&gt;tmpfs        tmpfs    3.9G     0  3.9G   0% /dev/shm&lt;br /&gt;/dev/mapper/pve-data&lt;br /&gt;            ext3     40G   21G   19G  53% /var/lib/vz&lt;br /&gt;/dev/sda1     ext3    496M   35M  436M   8% /boot&lt;br /&gt;&lt;br /&gt;Il se trouve que j'avais rajouté trois disques tout neuf de 400GB en RAID5 ce qui fait que j'avais un /dev/sdb de 800GB qui ne demandais qu'à être utilisé. J'aurais pu le formater est utiliser un lien symbolique pour relier /var/lib/vz/root à ma nouvelle partition seuleument du coup la formidable interface de management web de proxmox ne m'aurais pas donner les infos correctes sur l'espace disponible alors j'ai décidé d'utiliser les formidable possibilité de LVM2 le Logical Volume Manager de Linux.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Création d'une partition sur monnouveau disque /dev/sdb avec &lt;span style="font-weight: bold;"&gt;fdisk /dev/sdb&lt;/span&gt; et le type 8e pour Linux LVM  ce qui me donne :  &lt;blockquote  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;calc0nokvm:/var/lib/vz# fdisk /dev/sdb -l&lt;br /&gt;Disk /dev/sdb: 899.9 GB, 899995926528 bytes&lt;br /&gt;255 heads, 63 sectors/track, 109418 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt; Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sdb1               1      109418   878900053+  8e  Linux LVM&lt;/span&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Initialisation du disque au niveau lvm avec un &lt;span style="font-weight: bold;"&gt;pvcreate /dev/sdb1&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;calc0nokvm:/var/lib/vz# &lt;span style="font-weight: bold;"&gt;pvcreate /dev/sdb1&lt;/span&gt;&lt;br /&gt;Physical volume "/dev/sdb1" successfully created&lt;br /&gt;calc0nokvm:/var/lib/vz# &lt;span style="font-weight: bold;"&gt;pvdisplay&lt;/span&gt;&lt;br /&gt;--- Physical volume ---&lt;br /&gt;PV Name               /dev/sda2&lt;br /&gt;VG Name               pve&lt;br /&gt;PV Size               68.00 GB / not usable 0&lt;br /&gt;Allocatable           yes&lt;br /&gt;PE Size (KByte)       4096&lt;br /&gt;Total PE              17407&lt;br /&gt;Free PE               1022&lt;br /&gt;Allocated PE          16385&lt;br /&gt;PV UUID               3bzRCT-gRWz-7EGo-IMAl-rIAq-SJDz-rLqOOd&lt;br /&gt;&lt;br /&gt;--- NEW Physical volume ---&lt;br /&gt;PV Name               /dev/sdb1&lt;br /&gt;VG Name&lt;br /&gt;PV Size               838.18 GB&lt;br /&gt;Allocatable           NO&lt;br /&gt;PE Size (KByte)       0&lt;br /&gt;Total PE              0&lt;br /&gt;Free PE               0&lt;br /&gt;Allocated PE          0&lt;br /&gt;PV UUID               B1eOlE-xfwe-wDDJ-E15M-o5lV-VMSC-LJ9Hdk&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Ajout de ce nouveau volume physique au "volume groupe" pve&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;calc0nokvm:/var/lib/vz# &lt;span style="font-weight: bold;"&gt;vgextend pve /dev/sdb1&lt;/span&gt;&lt;br /&gt;Volume group "pve" successfully extended&lt;br /&gt;calc0nokvm:/var/lib/vz# &lt;span style="font-weight: bold;"&gt;vgdisplay&lt;/span&gt;&lt;br /&gt;--- Volume group ---&lt;br /&gt;VG Name               pve&lt;br /&gt;System ID&lt;br /&gt;Format                lvm2&lt;br /&gt;Metadata Areas        2&lt;br /&gt;Metadata Sequence No  5&lt;br /&gt;VG Access             read/write&lt;br /&gt;VG Status             resizable&lt;br /&gt;MAX LV                0&lt;br /&gt;Cur LV                3&lt;br /&gt;Open LV               3&lt;br /&gt;Max PV                0&lt;br /&gt;Cur PV                2&lt;br /&gt;Act PV                2&lt;br /&gt;VG Size               906.18 GB&lt;br /&gt;PE Size               4.00 MB&lt;br /&gt;Total PE              231982&lt;br /&gt;Alloc PE / Size       16385 / 64.00 GB&lt;br /&gt;Free  PE / Size       215597 / 842.18 GB&lt;br /&gt;VG UUID               qbzjFv-rYTt-pRGE-FfUP-BgXr-z54a-5QNmXh&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Augmentation de la taille d'un des volumes logiques, en l'occurence je rajoute 100GB au volume /dev/pve/data &lt;blockquote&gt;calc0nokvm:/var/lib/vz#&lt;span style="font-weight: bold;"&gt; lvextend -L+100G /dev/pve/data&lt;/span&gt;&lt;br /&gt;Extending logical volume data to 140.00 GB&lt;br /&gt;Logical volume data successfully resized&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Pas oublier de mettre a jour le filesystem avec un &lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;calc0nokvm:/var/lib/vz# &lt;span style="font-weight: bold;"&gt;resize2fs -p /dev/pve/data&lt;/span&gt;&lt;br /&gt;resize2fs 1.40-WIP (14-Nov-2006)&lt;br /&gt;Filesystem at /dev/pve/data is mounted on /var/lib/vz; on-line resizing required&lt;br /&gt;old desc_blocks = 3, new_desc_blocks = 9&lt;br /&gt;Performing an on-line resize of /dev/pve/data to 36701184 (4k) blocks.&lt;br /&gt;The filesystem on /dev/pve/data is now 36701184 blocks long.&lt;br /&gt;&lt;br /&gt;calc0nokvm:/var/lib/vz# &lt;span style="font-weight: bold;"&gt;df -hT&lt;/span&gt;&lt;br /&gt;Filesystem    Type    Size  Used Avail Use% Mounted on&lt;br /&gt;/dev/pve/root ext3     17G  750M   16G   5% /&lt;br /&gt;tmpfs        tmpfs    3.9G     0  3.9G   0% /lib/init/rw&lt;br /&gt;udev         tmpfs     10M   64K   10M   1% /dev&lt;br /&gt;tmpfs        tmpfs    3.9G     0  3.9G   0% /dev/shm&lt;br /&gt;/dev/mapper/pve-data&lt;br /&gt;            ext3    138G   21G  118G  16% /var/lib/vz&lt;br /&gt;/dev/sda1     ext3    496M   35M  436M   8% /boot&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Maintenant comme on peut le constater avec le df ci-dessus j'ai bel et bien gagné 100GB de plus sur mon volume logique pve-data ou est "mounté" mon /var/lib/vz. Et tout ça sans interruption de service. Je peux à tout moment relancer la commande pour rajouter de l'espace sur un de mes volumes logique. C'est pas beau cette souplesse ?!&lt;br /&gt;Cet &lt;a href="http://fr.wikipedia.org/wiki/Gestion_par_volumes_logiques"&gt;article sur wikipédia&lt;/a&gt; est utile, tout comme la &lt;a href="http://www.tldp.org/HOWTO/LVM-HOWTO/index.html"&gt;LVM Howto&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-510601238327907968?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/510601238327907968/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=510601238327907968' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/510601238327907968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/510601238327907968'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/05/augmenter-la-taille-dun-volume-logique.html' title='Augmenter la taille d&apos;un volume logique LVM2 online'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-1319677562961419951</id><published>2009-05-04T15:40:00.005+02:00</published><updated>2009-10-05T14:10:09.840+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='proxmox'/><title type='text'>Utilisation de Proxmox derrière un Proxy</title><content type='html'>J'utilise depuis peu la distribution &lt;a href="http://pve.proxmox.com/wiki/Main_Page"&gt;Proxmox &lt;/a&gt;comme environnent de virtualisation.&lt;br /&gt;Seulement il se trouve que dans le réseau ou j'utilise cette distribution je dois utiliser un proxy pour sortir sur le Net. Voici les modifications qu'il faut effectuer dans l'installation  de base pour que tout cela fonctionne correctement.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pour que "apt-get update" et "apt-get upgrade" fonctionne on modifie (ou le cas échéant création) du fichier &lt;span style="font-style: italic;"&gt;/etc/apt/apt.conf&lt;/span&gt; contenant au moins la ligne : &lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Acquire::http::Proxy "http://10.1.253.63:3128";&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Pour que wget fonctionne on modifie le fichier &lt;span style="font-style: italic;"&gt;/etc/wgetrc&lt;/span&gt; aux environs de la ligne 79 on enlève le commentaire en supprimant le # et on corrige l'adresse du proxy comme suit : &lt;span style="font-weight: bold;"&gt;&lt;blockquote&gt;http_proxy = http://10.1.253.63:3128/&lt;/blockquote&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Pour que la commande "pveam update" fonctionne on modifie&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;le  fichier : &lt;span style="font-style: italic;"&gt;/usr/share/perl5/PVE/APLInfo.pm&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;après la ligne 84  dans la méthode update on ajoute :  &lt;blockquote&gt;# this code works for ftp and http&lt;br /&gt; # always use passive ftp&lt;br /&gt; local $ENV{FTP_PASSIVE} = 1;&lt;br /&gt; my $ua = LWP::UserAgent-&gt;new;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    $ua-&gt;env_proxy;   #&lt;--ajout pour support proxy&lt;/span&gt;&lt;br /&gt; $ua-&gt;agent("PVE/1.0");&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;il suffit ensuite d'exécuter dans un shell:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;export http_proxy="http://10.1.253.63:3128/"&lt;br /&gt;&lt;/span&gt;avant de lancer le fameux pveam update&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-1319677562961419951?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/1319677562961419951/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=1319677562961419951' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1319677562961419951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1319677562961419951'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/05/utilisation-de-proxmox-derriere-un.html' title='Utilisation de Proxmox derrière un Proxy'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-5114730746890288869</id><published>2009-04-21T14:54:00.004+02:00</published><updated>2009-04-29T11:20:52.450+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualisation'/><category scheme='http://www.blogger.com/atom/ns#' term='syntax color'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='proxmox'/><title type='text'>Sur la coloration syntaxique dans Vim sur Debian</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Je travaille en ce moment sur la configuration d'un serveur &lt;a href="http://pve.proxmox.com/wiki/Main_Page"&gt;ProxMox.&lt;/a&gt;&lt;br /&gt;Cette distribution permet de mettre en oeuvre un serveur de virtualisation assez rapidement en s'appuyant sur une debian 64 bit et sur les outils kvm que j'utilise déjà depuis un bon bout de temps sur Gentoo et OpenVz (une solution de virtualisation "container" pour Linux  que je découvre), il faudra d'ailleurs que je fasse un post rien que sur ça.&lt;br /&gt;En attendant je vous livre &lt;a href="http://www.google.com/notebook/public/04586195572621368591/BDQcKQgoQrvWWxqUj"&gt;l'url publique de mon blocnotes sur la virtualisation&lt;/a&gt;&lt;br /&gt;Bref toujours est-il que dans mon envirronement réseau je suis dérrière un Proxy et qu'il a fallu que je fasse 2-3 modifs pour que tout cela fonctionne. Et comme ProxMox utilise les modules PVE en perl et que j'en avais marre de voir le code Perl dans &lt;span style="font-style: italic;"&gt;/usr/share/perl5/PVE/&lt;/span&gt; en Noir et Blanc avec vim je voulais activer la coloration syntaxique en faisant un syntax enable en mode commande dans Vim et je me vois répondre que c'est Nicht Supportieren dans cette version de Vim !&lt;br /&gt;Ach non d'un karambar ! et la en faisant un &lt;span style="font-weight: bold;"&gt;vim --version &lt;/span&gt;je vois qu'il y a un -syntax Was ist das!&lt;br /&gt;Ni de une ni de deux je lance un   &lt;span style="font-weight: bold;"&gt;apt-cache search vim &lt;/span&gt;qui m'indique qu'il existe un paquet "vim-perl" et zou un chtit  &lt;span style="font-weight: bold;"&gt;apt-get install vim-perl &lt;/span&gt;et je me retrouve  avec une belle commande vim.perl&lt;br /&gt;et maintenant quand vim.perl /usr/share/perl5/PVE/APLInfo.pm et que je tappe :syntax enable j'ai bel et bien du beau code en technicolor.&lt;br /&gt;Comme j'ai pas envie de tapper ça à chaque fois je met cela dans ~/.vimrc et ainsi cela sera pour toujours et tout simplement.&lt;br /&gt;A+ dans le bus&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5114730746890288869?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5114730746890288869/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5114730746890288869' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5114730746890288869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5114730746890288869'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2009/04/sur-la-coloration-syntaxique-dans-vim.html' title='Sur la coloration syntaxique dans Vim sur Debian'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-4150656844697486988</id><published>2008-12-02T15:37:00.002+01:00</published><updated>2008-12-02T15:51:56.178+01:00</updated><title type='text'>Convertir des fichier Tiff en Geotiff avec gdal</title><content type='html'>J'avais un répertoire plein de fichiers tif avec les fichiers tfw. Je voulais pouvoir me retrouver avec toutes ces images converties en &lt;a href="http://www.gdal.org/frmt_gtiff.html"&gt;Geotiff&lt;/a&gt;. L'avantage ensuite c'est que l'on a inclus dans le fichier image tiff toute les informations de géoréférencement. Pour cela on a besoin d'un seul outil : &lt;span style="font-weight:bold;"&gt;gdal_translate&lt;/span&gt; de l'excellente &lt;a href="http://www.gdal.org/gdal_utilities.html"&gt;suite d'outil Gdal&lt;/a&gt; &lt;br /&gt;Ainsi avec la commande :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;for i in `ls -1 *.tif`; do (gdal_translate -of GTiff -a_srs EPSG:4149 $i `basename $i .tif`_geo.tif); done&lt;/code&gt;&lt;br /&gt;tous les fichiers d'origine de votre répertoire serons préservés et pour chaque fichier tif MonBoFichier.tif il y aura un nouveau fichier MonBoFichier_geo.tif qui aura été créé.&lt;br /&gt;Et ces nouveaux fichiers contiennent des informations de géoréférencement comme vous pouvez le constater en lancant un tiffinfo ou mieux un :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;listgeo cn41_geo.tif&lt;br /&gt;Geotiff_Information:&lt;br /&gt;   Version: 1&lt;br /&gt;   Key_Revision: 1.0&lt;br /&gt;   Tagged_Information:&lt;br /&gt;      ModelTiepointTag (2,3):&lt;br /&gt;         0                0                0&lt;br /&gt;         550000           158000           0&lt;br /&gt;      ModelPixelScaleTag (1,3):&lt;br /&gt;         5                5                0&lt;br /&gt;      End_Of_Tags.&lt;br /&gt;   Keyed_Information:&lt;br /&gt;      GTModelTypeGeoKey (Short,1): ModelTypeGeographic&lt;br /&gt;      GTRasterTypeGeoKey (Short,1): RasterPixelIsArea&lt;br /&gt;      GeographicTypeGeoKey (Short,1): Unknown-4149&lt;br /&gt;      GeogCitationGeoKey (Ascii,7): "CH1903"&lt;br /&gt;      GeogAngularUnitsGeoKey (Short,1): Angular_Degree&lt;br /&gt;      End_Of_Keys.&lt;br /&gt;   End_Of_Geotiff.&lt;br /&gt;&lt;br /&gt;GCS: 4149/CH1903&lt;br /&gt;Datum: 6149/CH1903&lt;br /&gt;Ellipsoid: 7004/Bessel 1841 (6377397.16,6356078.96)&lt;br /&gt;Prime Meridian: 8901/Greenwich (0.000000/  0d 0' 0.00"E)&lt;br /&gt;&lt;br /&gt;Corner Coordinates:&lt;br /&gt;Upper Left    (550000d 0' 0.00"E,158000d 0' 0.00"N)&lt;br /&gt;Lower Left    (550000d 0' 0.00"E,110000d 0' 0.00"N)&lt;br /&gt;Upper Right   (620000d 0'4294967296.00"E,158000d 0' 0.00"N)&lt;br /&gt;Lower Right   (620000d 0'4294967296.00"E,110000d 0' 0.00"N)&lt;br /&gt;Center        (585000d 0' 0.00"E,134000d 0' 0.00"N)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-4150656844697486988?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/4150656844697486988/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=4150656844697486988' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/4150656844697486988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/4150656844697486988'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/12/convertir-des-fichier-tiff-en-geotiff.html' title='Convertir des fichier Tiff en Geotiff avec gdal'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-1372823409731732376</id><published>2008-07-23T14:05:00.004+02:00</published><updated>2008-07-23T16:14:47.005+02:00</updated><title type='text'>Backuper toutes les bases de données d'un serveur Postgresql</title><content type='html'>Il se trouve que je viens de décider d'updater mon &lt;a href="http://www.postgresql.org/"&gt;Postgresql&lt;/a&gt; 8.3 sur mon serveur de développement.&lt;br /&gt;Mais avant de basculer de la 8.2 à la 8.3 j'aimerais faire un backup de chacune de mes bases de données. Comme c'est une opération que je fais assez régulièrement je décide d'écrire un petit script que voici:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;## Script  : DBBAckup.sh allows to backup a postgresql database&lt;/span&gt;&lt;br /&gt;USAGE="&lt;span style="color: rgb(255, 0, 0);"&gt;Usage : `basename &lt;span style="color: rgb(204, 51, 204);"&gt;$0&lt;/span&gt;` dbnametobackup [postgresql_server(=localhost by default)]&lt;/span&gt;"&lt;br /&gt;CGDATE=`date -I`&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if [ $# -lt 2 ] ; then&lt;br /&gt;    if [ $# -lt 1 ] ; then&lt;br /&gt;            echo "&lt;span style="color: rgb(204, 51, 204);"&gt;$USAGE&lt;/span&gt;"&lt;br /&gt;            exit 1&lt;br /&gt;    else&lt;br /&gt;            DBName=&lt;span style="color: rgb(204, 51, 204);"&gt;$1&lt;/span&gt;&lt;br /&gt;            DBServer='localhost'&lt;br /&gt;    fi&lt;br /&gt;else&lt;br /&gt;          DBName=$1&lt;br /&gt;          DBServer=$2&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;BackupPath="&lt;span style="color: rgb(255, 0, 0);"&gt;DBBackup_${DBName}_${CGDATE}_Compressed.backup&lt;/span&gt;"&lt;br /&gt;echo "&lt;span style="color: rgb(255, 0, 0);"&gt;****Started backup of db $DBName at `date`, log of operation is in $BackupPath.log&lt;/span&gt;"&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if  pg_dump --ignore-version --verbose --format=c --oids -h $DBServer  -p 5432 -U postgres -f $BackupPath -n public $DBName &gt; $BackupPath.log 2&gt;&amp;amp;1 ; then&lt;br /&gt;          echo "BACKUP OKAY"&lt;br /&gt;          pg_restore -l $BackupPath &gt; "DBBackup_${DBName}_${CGDATE}_tablelist.txt"&lt;br /&gt;else&lt;br /&gt;          echo "PROBLEM OCCURED --&gt; see log in  $BackupPath.log"&lt;br /&gt;          if [ -f $BackupPath ] ; then&lt;br /&gt;                    if ![ -f $BackupPath ] ; then&lt;br /&gt;                       rm -f $BackupPath&lt;br /&gt;                    fi&lt;br /&gt;          fi&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;echo "****Finished sync of db $DBName at `date` "&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;puis en une ligne on sauve toutes les bases locales sauf les 2 templates qui ne me servent à rien :&lt;br /&gt;for i in `psql -U postgres -l | awk '{ print $1}' | grep -vE '^-|^List|^Name|template[0|1]|^\('`;do (DBBackupLocal.sh $i);done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-1372823409731732376?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/1372823409731732376/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=1372823409731732376' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1372823409731732376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/1372823409731732376'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/07/backuper-toutes-les-bases-de-donnes-dun.html' title='Backuper toutes les bases de données d&apos;un serveur Postgresql'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-9086797857578522952</id><published>2008-06-18T12:02:00.003+02:00</published><updated>2008-06-18T12:20:25.124+02:00</updated><title type='text'>FireFox 3 ça y est 5'690'000 download à 12h heure de Berck</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3159/2572956818_1c501c9200_o.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://farm4.static.flickr.com/3159/2572956818_1c501c9200_o.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Vous pouvez suivre le &lt;a href="http://downloadcounter.sj.mozilla.com/"&gt;décompte du nombre de download en temps réel chez Mozilla&lt;/a&gt;&lt;br /&gt;Et chez &lt;a href="http://www.framablog.org/index.php/post/2008/06/16/firefox-3-bientot-sur-vos-ecrans"&gt;Framasoft vous pouvez trouver un petit guide des nouveautés de FireFox 3 en Français&lt;/a&gt; qui est une traduction de l'article en anglais "&lt;a href="http://www.dria.org/wordpress/archives/2008/06/12/655/"&gt;A Field Guide to FireFox 3&lt;/a&gt;" de&lt;span style="font-style: italic;"&gt; Debra Lyn Richardson&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-9086797857578522952?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/9086797857578522952/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=9086797857578522952' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/9086797857578522952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/9086797857578522952'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/06/firefox-3-y-est-5690000-download-12h.html' title='FireFox 3 ça y est 5&apos;690&apos;000 download à 12h heure de Berck'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-6886428261160251927</id><published>2008-06-17T09:44:00.004+02:00</published><updated>2008-06-17T13:59:06.421+02:00</updated><title type='text'>Le plus bô des navigateurs fait peau neuve</title><content type='html'>&lt;a href="http://www.spreadfirefox.com/node&amp;amp;id=0&amp;amp;t=264"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" alt="Download Day" title="Download Day" src="http://www.spreadfirefox.com/files/images/affiliates_banners/dday_badge_fox.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Il est beau il est frais il est dans les étalages : &lt;span style="font-weight: bold;"&gt;le tout nouveau FireFox 3&lt;/span&gt; sera disponible dans les heures qui viennent et c'est la bonne occasion de rappeler à tout un chacun d'aller chercher sa toute nouvelle version.&lt;br /&gt;J'ai déjà pas mal utilisé pour ma part les versions 3 beta et candidate release et le premier constat que j'ai pu faire c'est une &lt;span style="font-weight: bold;"&gt;plus grande RAPIDITE&lt;/span&gt;. Oui, Firefox 3 est sacrément plus rapide sur des pages web 2 bien chargées.&lt;br /&gt;L'autre point que je trouve fabuleux c'est un support encore accru des normes dont au niveau graphique SVG et CANVAS .D'ailleurs je rpofite de signaler un essai particulièrement intéressant d'intégration avec OpenGL dans le projet &lt;a href="http://www.c3dl.org/"&gt;CANVAS 3D&lt;/a&gt; démarré par Vladimir Vukicevic. Mais il faut aussi et surtout dire que c'est la première version de FireFox qui utilise le moteur de rendu et de layout &lt;a href="http://developer.mozilla.org/en/docs/Gecko"&gt;Gecko 1.9&lt;/a&gt;.  Et on pourrait écrire un livre entier sur tout ce que l'on peut faire juste avec Gecko. D'ailleurs une idée serait d'utiliser Gecko pour réaliser un ActiveX qui permettrait de "voir" internet dans IE avec les yeux de FireFox. L'avantage d'une telle démarche étant qu'elle éviterait à tous les web dev de la planète de maintenir du code différent html+javascript et css pour chaque version deIE4, IE5,IE 5.5,IE6,IE7 et bientôt &lt;a href="http://digg.com/microsoft/IE8_development_Microsoft_should_learn_from_Apple_Mozilla_2"&gt;IE8&lt;/a&gt;. Et ainsi de n'écrire qu'une seule version de code qui respecte les norme du W3C et qui fonctionne sur FireFox, sur Opera et qui pour toutes les déclinaisons de IE et ces "subtiles" différences s'appuye sur une visualisation via l'ActiveX de rendu avec Gecko 1.9  pour montrer la page comme si on était dans FireFox. En fait la démarche inverse existe déjà, comme la pluspart des web développeurs  travaillent avec  Fire Fox il y a un plugin (IEtab) qui permet de "voir" une page dans FireFox avec le moteur de rendu de IE pour vérifier à quel point on est dans la m. dans la page en cours sous IE...&lt;br /&gt;A terme il serait plus utile et efficace "d'éliminer" IE du paysage Internet en faveur de navigateurs plus surs et respectueux des normes. Seulement comme IE est le navigateur par défaut sur les OS de Micro$oft on peut pas partir du principe qu'il existera plus après-demain en revanche on peut faire des sites qui redirigent les utilisateurs de IE sur des pages contenant un ActiveX  Gecko-FireFox qui leur présentent notre site avec les "yeux de FireFox". D'ailleurs on pourrait appeler cet ActiveX  "FireFoxEyeForBlindIE" et il pourrait avoir un logo assez rigolo...&lt;br /&gt;&lt;a href="http://developer.mozilla.org/en/docs/Firefox_3_for_developers"&gt;Sur le Mozilla Developer Center on trouvera une liste des nouveautés pour les développeurs&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.chti.org/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.chti.org/images/bienvenue.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bon assez rigolé on  fha en chtimi :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;" Té n’vas pas cor acater inne brin au Crôchoft , T'va  droit trifouïer chta version di FyreFotch 3 aujord'hui  et ti m'dit quoi !"&lt;br /&gt;&lt;/span&gt;ce qui donne à peu près :&lt;br /&gt;Tu ne vas pas encore acheter une merde à Microsoft, tu vas te chercher ta version de FireFox 3 aujourd'hui et tu m'en diras des nouvelles...&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;et &lt;a href="http://www.spreadfirefox.com/worldrecordgroup"&gt;pour aider à battre le record du monde de download d'un des meilleurs navigateur of the World on démarre&lt;/a&gt; tous le download  ce mardi 17 juin 2008 à 19h heure de &lt;a href="http://www.chti.org/"&gt;"Berck" (à chtit-land)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://developer.mozilla.org/en/docs/Firefox_3_for_developers"&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Lien" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.spreadfirefox.com/node&amp;amp;id=0&amp;amp;t=275"&gt;&lt;img alt="Download Day - French" title="Download Day - French" src="http://www.spreadfirefox.com/files/images/affiliates_banners/468x60_dday_fr.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-6886428261160251927?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/6886428261160251927/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=6886428261160251927' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6886428261160251927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6886428261160251927'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/06/le-plus-b-des-navigateurs-fait-peau.html' title='Le plus bô des navigateurs fait peau neuve'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-464980023602159712</id><published>2008-04-01T15:02:00.004+02:00</published><updated>2008-04-01T16:44:33.663+02:00</updated><title type='text'>Detecter des images foireuses</title><content type='html'>Lorsque l'on doit retrouver dans une arborescence toutes les images jpeg,gif ou png qui n'en sont pas, parce que une "bonne âme" a fait une malencontreuse "erreur" lors d'un transfert de fichiers qui c'est mal passé et que la "bonne âme" en question n'a pas pris la peine de tester son boulot...&lt;br /&gt;Enfin bref je veux donc détecter toutes les images qui n'en sont pas.&lt;br /&gt;Première étape, détecter tous les fichiers qui finissent par gif,png et jpg :&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;find mydirectory/ -regextype egrep -iregex '.+\.(png|gif|jpg)'&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;Cette commande va me trouver tous les fichiers qui possèdent un nom qui va se terminer par un .png ou un .gi ou encore un .jpg.&lt;br /&gt;Ok on a la liste de toutes les images reste à trier le bon grain de l'ivraie pour cela je vais utiliser la commande &lt;a href="http://www.imagemagick.org/script/identify.php"&gt;identify&lt;/a&gt; du superbe  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.imagemagick.org/image/logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.imagemagick.org/image/logo.jpg" alt="" border="0" /&gt;Imagemagick&lt;/a&gt; Cet outil très puissant permet entre autre de traiter des images en ligne de commande et il se trouve qu'avec identify on va laisser imagemagick détecter s'il s'agit d'une image. Si l'image n'en est pas une on aura une erreur et on pourra se concentrer sur ces fichiers images corrompus. En gros ça donne :&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;find mydirectory/ -regextype egrep -iregex '.+\.(png|gif|jpg)'|xargs identify 2&gt;erreurs_images.txt&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;Et voila ! on utilise  xargs pour transmettre le résultats de la commande précédente (le find) comme argument à la commande identify, puis avec la redirection de STDERR ( 2&gt; ) on  récolte toutes les erreurs dans un fichier pour traitement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-464980023602159712?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/464980023602159712/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=464980023602159712' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/464980023602159712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/464980023602159712'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/04/detecter-des-images-foireuses.html' title='Detecter des images foireuses'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-3092297631080107777</id><published>2008-03-13T16:26:00.004+01:00</published><updated>2008-03-13T16:43:03.770+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oneliner'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Extraire tous les textes de liens dans un tag</title><content type='html'>Soit une page html contenant une liste de fichiers du style de ce que l'on trouve dans une page d'index générée par le serveur Apache. Je veux en extraire tous les noms de fichiers.&lt;br /&gt;Donc en résumé j'ai quelque chose du style :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;img src="compressed.gif" alt="[   ]" height="22" width="20"&amp;gt; &amp;lt;a href="http://mirror.switch.ch/ftp/mirror/gentoo/distfiles/zsh-lovers_0.5.orig.tar.gz"&amp;gt;zsh-lovers_0.5.orig.tar.gz&amp;lt;/a&amp;gt; 01-Aug-2006 18:05  487K&lt;br /&gt;&amp;lt;img src="unknown.gif" alt="[   ]" height="22" width="20"&amp;gt; &amp;lt;a href="http://mirror.switch.ch/ftp/mirror/gentoo/distfiles/zsnes151src.tar.bz2"&amp;gt;zsnes151src.tar.bz2&amp;lt;/a&amp;gt;   25-Jan-2007 02:22  1.0M&lt;br /&gt;&amp;lt;img src="compressed.gif" alt="[   ]" height="22" width="20"&amp;gt; &amp;lt;a href="http://mirror.switch.ch/ftp/mirror/gentoo/distfiles/zssh-1.5a.tgz"&amp;gt;zssh-1.5a.tgz&amp;lt;/a&amp;gt;    24-Mar-2003 17:22  332K&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;et je veux obtenir la liste des fichiers :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;zsh-lovers_0.5.orig.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;zsnes151src.tar.bz2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;zssh-1.5a.tgz&lt;/span&gt;&lt;br /&gt;La solution comme d'habitude vient avec un perl oneliner&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;perl -ne 'print "$1\n" if m:&amp;lt;a[^&amp;gt;]+&amp;gt;(.+?)&amp;lt;/a&amp;gt;:gi' thefile.html&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-3092297631080107777?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/3092297631080107777/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=3092297631080107777' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3092297631080107777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3092297631080107777'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/03/extraire-tous-les-textes-de-liens-dans.html' title='Extraire tous les textes de liens dans un tag'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-6925943487783162312</id><published>2008-02-28T16:02:00.002+01:00</published><updated>2008-02-28T16:13:01.610+01:00</updated><title type='text'>esound emerge failed</title><content type='html'>J'ai eu une plantée de jade lors de mon emerge -pvuD world sur le ebuild media-sound/esound-0.2.38-r1&lt;br /&gt;en fait c'est pas la première fois que j'ai des ennuis avec jade lors d'un ebuild or ce qui est ennuyant c'est que malgré le fait que j'avais utilisé un USE -doc sur ce ebuild à la compilation il s'obstinait à vouloir lancer openjade et à planter systématiquement. Quelques google-minutes plus tard je trouvais la solution sur le &lt;a href="http://forums.gentoo.org/viewtopic-t-588809-highlight-esound.html?sid=c2f66f8bed9ba120af32d7ece2bc9014"&gt;forum gentoo &lt;/a&gt; en fait il s'agit d'une corruption possible de /etc/sgml et la solution est de refaire un build de sgml-common avec :&lt;br /&gt;&lt;code&gt;emerge -v app-text/sgml-common&lt;/code&gt;&lt;br /&gt;l'histoire complète se trouve sur &lt;a href="http://bugs.gentoo.org/show_bug.cgi?id=128952"&gt;cette entrée du bugzilla gentoo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-6925943487783162312?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/6925943487783162312/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=6925943487783162312' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6925943487783162312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6925943487783162312'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/02/esound-emerge-failed.html' title='esound emerge failed'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-5153665163951608214</id><published>2008-02-06T13:37:00.002+01:00</published><updated>2008-02-28T16:32:36.506+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oneliner'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Comment extraire une "zone" de texte</title><content type='html'>Il arrive qu'on aie besoin de sortir tout ce qu'il y a en tre blabla et blabli et bien en perl on peut utiliser lkes ranges avec l'opérateur '..'. Ainsi avec&lt;br /&gt;&lt;code&gt;perl -ne 'print if /&amp;lt;title.*&amp;gt;/../&amp;lt;\/title&amp;gt;;/' index.html&lt;/code&gt;&lt;br /&gt;On obtient uniquement le titre de la page&lt;br /&gt;Bien sur rien n'empêche d'utiliser l'excellent &lt;a href="http://search.cpan.org/dist/libwww-perl/"&gt;LWP&lt;/a&gt; pour récupérer la page&lt;br /&gt;&lt;code&gt;perl -MLWP::Simple -e 'getprint q(http://lapt.blogspot.com)'&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5153665163951608214?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5153665163951608214/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5153665163951608214' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5153665163951608214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5153665163951608214'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/02/comment-extraire-une-zone-de-texte.html' title='Comment extraire une &quot;zone&quot; de texte'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-3877950403180588672</id><published>2008-01-22T11:32:00.000+01:00</published><updated>2008-01-22T11:50:23.833+01:00</updated><title type='text'>Exécuter une commande sur plusieurs serveurs</title><content type='html'>Comme il m'arrive de plus en plus souvent de devoir exécuter une commande sur plusieurs serveurs Linux, je devais trouver une solution efficace et élégante pour éviter de lancer n fois un ssh NomServeuri MAcommande.&lt;br /&gt;Bien entendu cette solution existe déjà elle s'appelle &lt;a href="http://www.netfort.gr.jp/~dancer/software/dsh.html.en"&gt;DSH pour distributed shell&lt;/a&gt; (ou dancer shell ) et un fois installé elle permet de lancer un :&lt;br /&gt;&lt;code&gt;dsh -a -M -c -- geos-config --version&lt;code&gt;&lt;br /&gt;pour connaitre la version de &lt;a href="http://geos.refractions.net/"&gt;geos&lt;/a&gt; installé sur chaque serveur &lt;br /&gt;l'option -a indique que l'on veut lancer la commande sur toutes les machines se trouvant dans /etc/dsh/machines.list&lt;br /&gt;l'option -c indique que l'on veut lancer la commande en mode concurrent &lt;br /&gt;l'option -M préfixe la sortie des commandes avec le nom du serveur qui a envoyé la réponse&lt;br /&gt;le fichier /etc/dsh/dsh.conf permet de configurer les valeurs par défaut de certaines options&lt;br /&gt;Cet outil est une source d'efficacité extraordinaire quand on a plusieurs serveurs et bien sur comme toujours pour un outil puissant il peut être aussi relativement dangereux s'il est mal utilisé.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-3877950403180588672?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/3877950403180588672/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=3877950403180588672' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3877950403180588672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3877950403180588672'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/01/excuter-une-commande-sur-plusieurs.html' title='Exécuter une commande sur plusieurs serveurs'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-5245933799539185628</id><published>2008-01-15T15:21:00.000+01:00</published><updated>2008-01-15T16:20:18.214+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='oneliner'/><category scheme='http://www.blogger.com/atom/ns#' term='log'/><category scheme='http://www.blogger.com/atom/ns#' term='text'/><title type='text'>Compter le nombre de codes HTTP dans des fichiers logs avec awk</title><content type='html'>&lt;a href="http://www.gnu.org/software/gawk/gawk.html"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.gnu.org/graphics/gnu-head-sm.jpg" border="0" alt="logo GNU" /&gt;&lt;/a&gt;&lt;br /&gt;Aujourd'hui je devais sortir rapidement la liste des différents codes HTTP de tous les fichiers logs IIS. Comme expliqué dans mon post précédent j'ai un fichier par jour et environ 16 GB de fichiers logs sur une année...&lt;br /&gt;Dans un fichier log pour un serveur web  il y a en général un code indiquant le status de l'opération réalisée.&lt;br /&gt;Ainsi dans &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bea506fd-38bc-4850-a4fb-e3a0379d321f.mspx"&gt;&lt;br /&gt;IIS on peut utiliser un format de log W3C&lt;/a&gt; qui affichera la colonne sc-status pour le Http status code ainsi que la colonne sc-substatus. Mon but est de parcourir tous les fichiers logs et de calculer le nombre de fois que l'on trouve chacun de ces status code.&lt;br /&gt;On pourrait le faire avec du perl, mais je préfère aujourd'hui essayer awk présent sur toutes les bonnes distros Linux en standard.&lt;br /&gt;awk ou le plus répandu et moderne gawk est un outil formidable pour traiter très rapidement des gros volumes de données au format texte. Commençons par un exemple simple :&lt;br /&gt;je veux trouver toutes les lignes du log ou le code d'état HTTP est plus grand que 500 ce qui correspond à une erreur serveur. Et bien avec awk cela ce fait simplement en écrivant :&lt;br /&gt;&lt;code&gt;gawk '$14&gt;500 {print}' 2007/ex070105.log&lt;/code&gt;&lt;br /&gt;la première partie indique une règle qui est suivie entre accolade de l'action à entreprendre si cette règle est vraie.Donc dans ce cas on dit que lorsque $14 est plus grand que 500 on veut afficher la ligne courante.&lt;br /&gt;Pourquoi $14 me direz vous et bien il se trouve que awk considère chaque ligne comme un enregistrement et dans chaque ligne il considère que chaque fois qu'il y a un espace c'est un nouveau champ de l'enregistrement courant.&lt;br /&gt;Comme une ligne de mon log IIS est composée des champs suivants :&lt;br /&gt;&lt;code&gt;# date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;pour awk le $1 contiendra la date,le $2 la valeur time et ainsi de suite.&lt;br /&gt;bien entendu la commande précédente peut être lancée sur un groupe de fichiers. Par exemple pour avoir la liste complète pour tout le mois de janvier il suffit de faire:&lt;br /&gt;&lt;code&gt;gawk '$14&gt;500 {print}' 2007/ex0701*&lt;/code&gt;&lt;br /&gt;Dans le cas qui m'intéresse je vais devoir stocker dans un tableau associatif une entrée par paire de status/sous-status trouvé et l'incrémenter chaque fois que je le retrouve et tout cela ce fait en écrivant :&lt;br /&gt;&lt;code&gt;{s[$14 ":" $15]++}&lt;/code&gt;&lt;br /&gt;Ici la variable tableau s'appelle "s" et la clé d'indexation et composée de la valeur courante du champ $14 (sc-status) suivi d'un charactère de séparation ":" puis la valeur de $15 (sc-substatus)&lt;br /&gt;Comme je ne veux pas traiter les lignes de commentaires je peux ajouter une règle avant cette action qui ne prendra que les lignes qui ne commence pas par un "#" ce qui donnera donc :&lt;br /&gt;&lt;code&gt;$1 !~ /^#.+$/ {s[$14 ":" $15]++}&lt;/code&gt;http://www.blogger.com/img/gl.link.gif&lt;br /&gt;Il ne me reste plus qu'à parcourir le contenu de mon tableau associatif une fois que toutes les lignes ont été traitées et c'est la que la règle END prend tout son sens puisqu'elle correspond justement au cas que nous voulons  on aura donc qqch du style:&lt;br /&gt;&lt;code&gt;END{for(i in s) {printf("%-9s\t%i\n",i,s[i])}}&lt;/code&gt;&lt;br /&gt;Voici la solution complète de mon problème en une ligne, ça va donner au final qqch comme:&lt;br /&gt;&lt;code&gt;gawk '$1 !~ /^#.+$/ {s[$14 ":" $15]++}; END{Mysort="sort -k 1";for(i in s) {printf("%-9s\t%i\n",i,s[i])|Mysort}}' 2007/ex0701*&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;On peut trouver la liste des status-code et leur explication pour IIS sur le &lt;a href="http://support.microsoft.com/kb/318380"&gt;site Technet de Microsoft&lt;/a&gt;&lt;br /&gt;Par ailleurs la documentation très complète de &lt;a href="http://www.gnu.org/software/gawk/gawk.html"&gt;awk &lt;/a&gt;est disponible sur le site &lt;a href="http://www.gnu.org/"&gt;GNU&lt;/a&gt;&lt;br /&gt;Voici un lien sur un &lt;a href="http://www.tac.nyc.ny.us/manuals/"&gt;site avec plusieurs Manuels très utile tels que bash, bison et awk&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5245933799539185628?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5245933799539185628/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5245933799539185628' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5245933799539185628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5245933799539185628'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/01/compter-le-nombre-de-codes-http-dans.html' title='Compter le nombre de codes HTTP dans des fichiers logs avec awk'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-9020374525451444931</id><published>2008-01-11T15:42:00.001+01:00</published><updated>2008-01-11T17:12:53.170+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oneliner'/><category scheme='http://www.blogger.com/atom/ns#' term='text'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Analyse de fichiers Log en perl</title><content type='html'>Quand il faut analyser de grandes quantité de données sous format texte tel que des fichiers logs, Perl est d'une aide inappréciable.&lt;br /&gt;Voici un joli "perl oneliner" qui va calculer le nombre de hits par user login dans un log IIS&lt;br /&gt;&lt;code&gt;&lt;br /&gt;perl -ne 'unless (/^#.*$/) {@e=split(/ /,$_); $Login{uc($e[8])}++;} END{foreach $key (sort keys %Login){printf(qq(%-25s %i\n),$key,$Login{$key}); } }'  2007/ex070106.log 2007/ex070107.log |sort -k 2nr &gt;DistinctsLogins200701.txt&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Analysons un peu cette ligne de commande:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;perl -ne&lt;/span&gt; :  on lance perl  avec les option -n qui rajoute une boucle while &lt;span class="s"&gt;(&lt;/span&gt;&lt;&gt;&lt;span class="s"&gt;)&lt;/span&gt; &lt;span class="s"&gt;{...} implicite et l'option -e qui permet justement d'exécuter une commande cf &lt;a href="http://perldoc.perl.org/perlrun.html"&gt;doc perl en ligne&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;" class="s"&gt;'unless &lt;/span&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;(/^#.*$/) {&lt;/span&gt; : &lt;/code&gt;&lt;span class="s"&gt;viens maintenant le début du programme perl,  en l'occurrence on dit que tant qu'on est pas dans une ligne de commentaire on va faire quelque chose se trouvant après l'accolade ouvrante. En effet dans les fichiers logs une ligne commentaire commence par un dièse # d'ou l'expression régulière /^#.*$/  qui signifie  si la ligne  commence  par  (c'est le chapeau  ^)  un dièse  (# )  suivi de n'importe quel caractère (.) qui se répète zéro ou plusieurs  fois (*) jusqu'à la fin de la ligne ($)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;@e=split(/ /,$_); :&lt;/span&gt;on stocke dans le tableau @e tous les éléments résultants de l'éclatement de la ligne courante ($_)  en réalisant cet "éclatement" en partageant la ligne en plusieurs morceaux séparés par un espace (/ /). On aurait pu aussi bien utiliser une autre expression régulière que celle-ci qui est vraiment triviale, mais il se trouve que dans les fichiers logs de IIS, les champs de chaque lignes sont bel et bien séparés par un espace.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;$Login{uc($e[8])}++; : &lt;/span&gt;ici on incrémente la valeur stockeé dans un tableau associatif (ou un dictionnaire si vous préférez) $Login dont la clé est justement le nom du login trouvé à l'emplacement 9 $e[8] que l'on passe en majuscules (avec la fonction uc). C'est assez concis par rapport à d'autres langages... ainsi si on trouve sur la ligne courante on trouve un utilisateur du nom de toto on va créer une nouvelle entrée dans notre tableau associatif $Login{"toto"} qui sera incrémentée de 1 à l'aide de l'opérateur ++. Quand on retombera plus loin sur une autre ligne avec l'utilisateur toto et bien l'entrée du tableau associatif qu'on avait créé au stade d'avant va simplement s'incrémenter à deux.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;} END {&lt;/span&gt; : voila on est à la fin du code qui s'éxécute pour chaque ligne du fichier sauf si c'est un commentaire. Et on va passer grâce au "END {...}" au bloc de code qui doit s'éxécuter une fois que toutes les lignes de tous les fichiers passé en paramètre aurons été traités. Cette syntaxe sympa est tirée de l'outil awk dont il faudra que je vous parle d'ailleurs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;foreach $key (sort keys %Login){ : &lt;/span&gt;On veut parcourir notre tableau alors on a pour chaque clé ($key) de notre tableau associatif (%Login) trié au préalable par les valeurs de ces clés (sort keys). La phrase est un peu alambiquée mais c'est assez simple&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;printf(qq(%-25s %i\n),$key,$Login{$key}); :&lt;/span&gt; Ici on faire un  affichage formaté avec la fonction printf d'une chaine entre guillemet (la fonction qq(coucou) équivaut au traditionnel "coucou" mais elle est beaucoup plus digeste dans une ligne de commande).  le %-25s revient à dire affiche sur 25 colonnes aligné à gauche la chaine de caractère que je vais te donner. Il est suivi du %i\n pour afficher le nombre de hits trouvé pour cet utilisateur suivi d'un saut de ligne. Enfin on passe les deux valeurs à savoir $key qui contient le nom de l'utilisateur courant et $Login{$key} son nombre de hits.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="text-align: left;"&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;} }' : &lt;/span&gt;Et voila ! on ferme le bloc du foreach et on ferme le bloc de code du END{ et nous voici au bout de notre commande perl ... plus long à expliquer qu'à taper...&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="text-align: left;"&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;2007/ex070106.log 2007/ex070107.log : &lt;/span&gt;sont deux fichiers de logs que je veux traiter. J'aurais pu aussi bien dire 2007/*.log pour traiter d'un coup tous mes fichiers logs de l'année. Ou encore 2007/ex0701* pour traiter uniquement les fichiers du mois de janvier.&lt;/span&gt;&lt;/li&gt;&lt;li style="text-align: left;"&gt;&lt;span class="s"&gt;&lt;span style="font-weight: bold;"&gt;|sort -k 2nr &gt;DistinctsLogins200701.txt : &lt;/span&gt;Finalement je "pipe" avec | les résultats dans le filtre sort avec les options -k 2nr ce qui a pour effet d'effectuer un tri numérique descendant basé sur la deuxième colonne du fichier. Au final je redirige le tout dans le fichier DistinctsLogins200701.txt.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Bon ne reste plus qu'à faire de belles annalyse croisée de vos fichiers logs. Le même oneliner peut être utilisé pour sortir la liste des Http Code de votre Serveur et ainsi voir combien d'erreurs serveurs vous avez eut (HTTP CODE 500)  la seule chose que vous allez changer c'est l'indice du tableau e au point 4. Au lieu de 8 vous aurez une autre valeur. Pour info dans IIS il y a à intervalle régulier des lignes d'entêtes du style&lt;br /&gt;#Software: Microsoft Internet Information Services 6.0&lt;br /&gt;#Version: 1.0&lt;br /&gt;#Date: 2007-01-07 11:33:26&lt;br /&gt;#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken&lt;br /&gt;C'est à cause de ces lignes que j'ai le unless du point 2 et vous voyez que la quantité de champ que vous pouvez analysez est plutôt vaste alors bonne analyse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-9020374525451444931?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/9020374525451444931/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=9020374525451444931' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/9020374525451444931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/9020374525451444931'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/01/analyse-de-fichiers-log-en-perl.html' title='Analyse de fichiers Log en perl'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-3999777588151268764</id><published>2008-01-07T11:51:00.000+01:00</published><updated>2008-01-07T12:01:22.322+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curl'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Downloader un fichier sur le net sous Win32</title><content type='html'>Il est parfois nécessaire de récupérer un ou plusieurs fichiers sur le net en ligne de commande sous Microsoft. Pour cela il suffit d'utiliser l'excellent &lt;a href="http://curl.haxx.se/"&gt;curl&lt;/a&gt; compilé pour cette plateforme.&lt;br /&gt;Ensuite de quoi il faut penser à utiliser un utilisateur null avec l'option -u ":" . Ainsi cela force curl à utiliser les credentials du compte courant, c'est à dire le user qui est connecté.&lt;br /&gt;Chez moi au final cela donne &lt;br /&gt;&lt;code&gt;curl --anyauth -u ":" -x "" --netrc http://www.test.com/logs/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;l'option -x "" annule une evt variable d'environnement définissant un proxy, elle est utile par exemple quand vous ne voulez pas utilisez le proxy parceque votre serveur est dans votre réseau local (et pas sur internet)&lt;br /&gt;A vous de voir si vous en avez besoin ou pas selon les cas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-3999777588151268764?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/3999777588151268764/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=3999777588151268764' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3999777588151268764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/3999777588151268764'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2008/01/downloader-un-fichier-sur-le-net-sous.html' title='Downloader un fichier sur le net sous Win32'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-6242534307762214714</id><published>2007-07-10T09:43:00.001+02:00</published><updated>2007-07-10T10:01:35.367+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yesterday'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='date'/><category scheme='http://www.blogger.com/atom/ns#' term='now'/><title type='text'>Trouver la date de hier en Perl</title><content type='html'>Pour récupérer la date de hier en Perl, toujours en une ligne:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;perl -e '($d,$m,$y)= (localtime)[3..5];printf("%04d-%02d-%02d",$y+1900 ,$m+1,$d-1)'&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;retournera : &lt;/span&gt;&lt;/span&gt;2007-07-09&lt;br /&gt;S'il s'agit de conserver cette chaine pour par exemple downloader un fichier log il suffit d'utiliser sprintf&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;($d,$m,$y)= (localtime)[3..5];&lt;br /&gt;$yesterday=sprintf("%04d-%02d-%02d",$y+1900 ,$m+1,$d-1);&lt;br /&gt;print $yesterday;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-6242534307762214714?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/6242534307762214714/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=6242534307762214714' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6242534307762214714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/6242534307762214714'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2007/07/trouver-la-date-de-hier-en-perl.html' title='Trouver la date de hier en Perl'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-8963690236028005699</id><published>2007-07-09T16:34:00.000+02:00</published><updated>2007-07-10T10:03:37.379+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Récuperer tous les hyperliens d'une page web</title><content type='html'>c'est trop beau pour pas le signaler, en une ligne afficher la liste de tous les hyperliens sur une page web&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;curl --anyauth --netrc http://yourweb/yourpage.htm |perl -ne 'while (m/HREF=["]([^"]+)/gi) {print "$1\n";} '&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-8963690236028005699?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/8963690236028005699/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=8963690236028005699' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/8963690236028005699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/8963690236028005699'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2007/07/rcuperer-tous-les-hyperliens-dune-page.html' title='Récuperer tous les hyperliens d&apos;une page web'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-5203634079533034435</id><published>2007-01-30T07:46:00.000+01:00</published><updated>2007-01-30T08:22:04.655+01:00</updated><title type='text'>Vista? Voyons un peu plus loin que le bout de notre nez</title><content type='html'>Aujourd'hui la société Micro$oft lance à grand coup de millions de dollars son "nouvel" OS. Quand un journaliste a demandé s'il était vrai que la société allait investir plus d'un demi-milliard de dollars pour la promotion de son produit Vista le big boss a joué son joker et n'a pas voulu démantir...&lt;br /&gt;Posons nous la question si aujourd'hui avec les problèmes et la misère qu'il y a sur la planète  s'il est raisonnable qu'une société investisse autant pour la promotion que pour la manufacture d'un produit. Pour la petite histoire il y a quelques anées pour le lancement de Windows NT 4 Micro£oft avaient déjà reconnu à l'époque que le budget promo était identique au coûts de dev.&lt;br /&gt;Si un vendeur d'aspirateurs vous annonçait la même chose fièrement en essayant de vous fourguez son tout dernier produit contre la modique somme de 450US$ vous feriez quoi ? &lt;br /&gt;Probable que vous éclateriez de rire et que vous iriez achetez un aspirateur à la concurrence pour 10 fois moin cher.&lt;br /&gt;Dans le monde merveilleux de l'informatique cette société vend du vent depuis déjà quelques années. Cela n'a pas toujours été le cas, mais maintenant c'est vraiment lamentable. Rien de réellement innovant, juste des plagias de technologies qui existent et qui fonctionnent ailleurs, ou ils sont passés maîtres dans l'art subtil de l'apparence du standard interne qui n'a pour seul but que de rendre leur produit incompatible avec le reste du monde.&lt;br /&gt;Le reste du monde c'est Linux, c'est le monde de l'OpenSource. J'ai travaillé pendant plus de 10 ans avec des produits de chez MicroFroft, aujourd'hui après quelques années sous Linux, je suis très serein.&lt;br /&gt;Et je suis certain d'une chose c'est que je ne dépenserais plus un sou pour des produits Micro$oft, car il y a des choses magnifique dans le monde de l'OpenSource.&lt;br /&gt;Alors puisque Micro£oft à baptiser son nouvel OS "Vista" et que cela signifie Vue en bon français faisons preuve de lucidité et avec un bon pied et un bon oeil investissons dans l'OpenSource et dans des oeuvres d'entraide les montants que Micro$osft nous demande pour son "nouveau" produit . Ce sera de l'argent bien mieux utilisé, croyez moi !&lt;br /&gt;Peut-être que la mort récente de l'abbé Pierre nous rappelera à la raison et que nous allons commencer à nous comporter en citoyen et consommateur responsable pour que la cohabitation sur notre petite planète soit plus l'oeuvre d'une construction durable basée sur l'équité et le partage.&lt;br /&gt;Bill Gates a donné des montants considérables à des organisations d'entraide. Nous pouvons faire comme lui, et en ammont du cycle de consommation faire nos choix en bonne intelligence.&lt;br /&gt;Bon je vous laisse je vais verser la moitié du prix de Vista à Gentoo et l'autre  à Emaus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5203634079533034435?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5203634079533034435/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5203634079533034435' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5203634079533034435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5203634079533034435'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2007/01/vista-voyons-un-peu-plus-loin-que-le.html' title='Vista? Voyons un peu plus loin que le bout de notre nez'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-8311881531388934919</id><published>2006-11-28T13:48:00.000+01:00</published><updated>2007-07-09T17:24:37.497+02:00</updated><title type='text'></title><content type='html'>  &lt;h2&gt;Premier  test de Google Docs &amp; Spreadsheets !&lt;/h2&gt;&lt;br&gt;Bon et bien  voilà  le premier test d'utilisation d'un service de plus de Google à savoir l'éditeur en ligne de document et de tableaux...&lt;br&gt;Il faut avouer que la perspective de pouvoir utiliser un traitement de texte et un tableur indépendamment de la plate-forme sur laquelle on se trouve est assez sympathique.&lt;br&gt;&lt;br&gt;Et puis le fait de pouvoir rédiger un document dans une interface conviviale et le poster dans un blog c'est bien pratique.&lt;br&gt;On verra à l'usage...&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-8311881531388934919?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/8311881531388934919/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=8311881531388934919' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/8311881531388934919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/8311881531388934919'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2006/11/premier-test-de-google-docs.html' title=''/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-5759885124920544126</id><published>2006-11-07T14:21:00.000+01:00</published><updated>2006-11-07T14:40:34.821+01:00</updated><title type='text'>QEMU un PC dans ton PC</title><content type='html'>Après un essai de vmware sur ma Linux Gentoo Box, et vu que je n'étais pas chaud pour lacher 190$  j'ai décidé de tester &lt;a href="http://fabrice.bellard.free.fr/qemu/index.html"&gt;QEMU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Et ben ça marche super bien, sur gentoo il y a un &lt;a href="http://gentoo-wiki.com/HOWTO:_Qemu"&gt;HOWTO&lt;/a&gt; de disponible. En gros après le traditionnel emerge&lt;br /&gt;il faut faire un :&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;qemu-img create disk.img 10G&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;qui va créer un fichier disque pour votre bécanne virtuelle, puis après avoir mis dans votre lecteur CD une galette de chez M$ vous pouvez sans autre lancer :&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;qemu -localtime -hda disk.img -cdrom /dev/cdrom -boot d -m 256 -win2k-hack&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;et c'est parti pour l'installation de l'OS du père Bill sur votre bécanne virtuelle&lt;br /&gt;Quand c'est terminé (l'installation) vous pouvez éteindre votre bécanne virtuelle.&lt;br /&gt;Dorénavant pour lancer votre Bécanne M$ sur Linux il vous suffirea de taper :&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;qemu -localtime -hda disk.img  -m 256&lt;br /&gt;&lt;/span&gt;Sur ma bécanne gentoo j'ai rajouté  les 4 paquetages suivants dans /etc/portage/package.keywords pour avoir les dernières versions&lt;br /&gt;app-emulation/qemu-user ~x86&lt;br /&gt;app-emulation/qemu-softmmu ~x86&lt;br /&gt;app-emulation/qemu ~x86&lt;br /&gt;app-emulation/kqemu ~x86&lt;br /&gt;j'ai aussi utilisé les 3 USE FLAGS suivants dans /etc/portage/package.use&lt;br /&gt;app-emulation/qemu-softmmu kqemu sdl alsa&lt;br /&gt;kqemu est particulièrement intéressant puisqu'il crée un module kernel qui va rendre l'utilisation de qemu beaucoup plus rapide, il faut bien sur charger le module avec un chtit:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;modprobe kqemu major=0&lt;br /&gt;&lt;br /&gt;C'est bô, ça fonctionne vachement vite, c'est pur, c'est sous Linux !&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-5759885124920544126?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/5759885124920544126/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=5759885124920544126' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5759885124920544126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/5759885124920544126'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2006/11/qemu-un-pc-dans-ton-pc.html' title='QEMU un PC dans ton PC'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-115738485105539977</id><published>2006-09-04T17:33:00.000+02:00</published><updated>2007-07-10T10:03:37.379+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Comment ajouter un séparateur de millier (en 1line)</title><content type='html'>c'est trop beau, c'est du perl et c'est en une seule ligne :&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;code&gt;perl -pi.original -e "s/(?&lt;=\d)(?=(\d\d\d)+(?=&lt;\/FONT&gt;))/'/g unless /2006/" default.html&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;et avec ça tous les chiffres du fichier html passé en paramètre vont recevoir un joli séparateur de milliers. Et ne plus on a une copie de sécurité qui se crée au cas zou...&lt;br /&gt;Ainsi j'avais des lignes du style :&lt;br /&gt;&amp;lt;FONT SIZE="-1"&amp;gt;644303595217&amp;lt;/FONT&amp;gt;&lt;br /&gt;qui deviennent&lt;br /&gt;&amp;lt;FONT SIZE="-1"&amp;gt;644'303'595'217&amp;lt;/FONT&amp;gt;&lt;br /&gt;&lt;br /&gt;c'est juste pur , c'est juste du perl !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-115738485105539977?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/115738485105539977/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=115738485105539977' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115738485105539977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115738485105539977'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2006/09/comment-ajouter-un-sparateur-de.html' title='Comment ajouter un séparateur de millier (en 1line)'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-115389718998745444</id><published>2006-07-26T08:07:00.000+02:00</published><updated>2007-07-10T10:03:37.380+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Modifer une variable dans n fichiers de configs INI</title><content type='html'>Hier, j'ai finalisé la config d'un serveur de secours Linux Opteron pour notre guichet cartographique. Il s'appuye sur l'excellent produit &lt;a href="http://mapserver.gis.umn.edu/"&gt;Mapserver&lt;/a&gt; ainsi que sur le non moins excellent framework  php &lt;a href="http://www.cartoweb.org/"&gt;Cartoweb&lt;/a&gt; de &lt;a href="http://www.camptocamp.com/"&gt;CamptoCamp&lt;/a&gt;!&lt;br /&gt;J'utilise rsync pour la synchronisation et j'ai été confronté à un chtit problème, sur mon deuxième serveur au vu des versions de apache et php que j'avais utilisé il me fallait charger la dll php_mapscript.so au niveau du php.ini. Du coup il me fallait modifier tous les sites cartographiques de mon serveur au niveau d'un fichier de config nommé server.ini. Je devais modifier dans tous ces fichiers la valeur d'une variable nommée disablePHPModuleCheck, est la passer de false à true.&lt;br /&gt;Donc en résumé j'avais n fichiers &lt;span style="font-weight:bold;"&gt;server.ini&lt;/span&gt; à chercher dans une arborescence complexe démarrant dans "/data/dataweb/web/" puis il me fallait éditer chacun de ces fichiers pour passer la valeur de la variable "&lt;span style="font-weight:bold;"&gt;disablePHPModuleCheck&lt;/span&gt;" de false à true. Et il fallait absolument automatiser cette tâche pour deux raisons, la première étant que je suis un gros fainéant ne supportant pas de faire des tâches répétitives, la deuxième étant qu'à chaque synchronisation depuis le serveur source mes modifs seraient perdues.&lt;br /&gt;Heureusement en m'appuyant sur le truc précédent et en le combinant avec un "perl oneliner" j'allais facilement atteindre le nirvana de l'adminsitrateur système.&lt;br /&gt;Assez parlé voici la commande :&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;find /data/dataweb/web/ -name 'server.ini'|xargs perl -pi.original -e 's/(^disablePHPModuleCheck\s*=\s*)(false)/$1true/'&lt;/span&gt;&lt;br /&gt;la première partie jusqu'au xargs est similaire au truc précédent, on cherche tous les fichiers "server.ini" depuis un endroit donné est on passe le nom de ces fichiers à la commande se trouvant après xargs. Ensuite on utilise perl pour éxécuter une expression perl en mode ligne de commande (grâce au -e). Dans mon cas il s'agit d'une bête regular expression de substitution contenant deux groupes de match identifiables aux deux paires de parenthèses, le premier groupe va chercher une ligne commençant par (grâce au ^) le mot clé disablePHPModuleCheck suivi de zéro ou plusieurs espace (grâce au \s*) suivi d'un signe égal (=) et de zéro ou plusieurs espaces (\s*).Le deuxième groupe va chercher la présence d'une valeur false pour cette variable. la valeur de substitution correspond à tous le contenu du premier groupe (grâce au $1) suivi de la valeur true. En fait la partie vraiment "magique" se situe au niveau des paramètres -p et -i.originale le premier crée une boucle implicite du style :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;while (&lt;&gt;) {&lt;br /&gt; #et ici il éxécute votre commande&lt;br /&gt;} continue {&lt;br /&gt; print or die "-p destination $!\n";&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;cette boucle sera appliquée sur tous les fichiers passé en paramètre, et on peut même rajouter du code à exécuter avant ou après la boucle (comme dans awk) avec des blocs "BEGIN" et "END" le mieux c'est de faire un chtit "man perlrun" pour voire tout cela plus en détail.&lt;br /&gt;Enfin le paramètre -i.original permet d'éditer le fichier en place et de créer une copie de secours de l'original en le renommant en rajoutant .original à la fin du nom du fichier.&lt;br /&gt;Voilà c'est tout, c'est plus long à expliquer qu'à taper, j'éspère que vous allez faire plein de tests d'editions en place grâce au "perl oneliners".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-115389718998745444?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/115389718998745444/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=115389718998745444' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115389718998745444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115389718998745444'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2006/07/modifer-une-variable-dans-n-fichiers.html' title='Modifer une variable dans n fichiers de configs INI'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-115036259453225080</id><published>2006-06-15T11:03:00.000+02:00</published><updated>2007-07-10T10:03:37.380+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Trouver des fichiers contenant une regular expression</title><content type='html'>L'autre jour je devais parcourir toute une arborescence de fichiers pour trouver tous les fichiers de type CSS ayant un style utilisant l'attribut url("cheminrelatif/fichierimage.png") et ou il manquait le premier guillemet.&lt;br /&gt;Avec la combinaison des commandes find,egrep et surtout xargs j'ai pu trouver les fichiers en question tout de suite :&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight:bold;"&gt;find . -name '*.css' |xargs egrep -lr 'url\([^"]+"\)'&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-115036259453225080?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/115036259453225080/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=115036259453225080' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115036259453225080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115036259453225080'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2006/06/trouver-des-fichiers-contenant-une.html' title='Trouver des fichiers contenant une regular expression'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-115019378574927541</id><published>2006-06-13T11:49:00.000+02:00</published><updated>2007-07-10T10:16:08.749+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Les commandes "shell bash" sont trop belles !</title><content type='html'>Quand on administre des serveurs, ou quand on programme on a souvent des petits problèmes à résoudre en relation avec un certain nombre de fichiers ou une crackée de paramètres.&lt;br /&gt;Et franchement la connaissance du shell est un outil qui fait gagner beaucoup de temps.&lt;br /&gt;Un des problèmes qui vient souvent c'est un truc du style :&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;pour chacun de ces trucs&lt;br /&gt;         fait ça avec le truc...&lt;/span&gt;&lt;br /&gt;Et la boucle for est salvatrice, Ainsi je veux lancer un script ou une commande avec un paramètre différent qui se trouve être dans un fichier ListeParam.txt :&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;for i in `cat ListeParam.txt` ; do (./MonScript.sh $i) ; done&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;Et voilà ! mon script va se lancer autant de fois qu'il y a de lignes dans le fichier ListeParam.txt&lt;br /&gt;Simple, efficace, juste BÔ !&lt;br /&gt;J'avais par exemple cette liste de noms de 352 tables SQL ListeTables.txt&lt;br /&gt;et un script php qui devait analyser la table sous MSSQL et généer du code pour la créer sous &lt;a href="http://www.postgresql.org/"&gt;PostgreSql&lt;/a&gt; GenPgSqlCreate.php&lt;br /&gt;et bien avec un rapide :&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;for i in `cat ListeTables.txt` ; do (php GenPgSqlCreate.php  $i&gt;$i.sql) ; done&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;j'ai pu génèrer mes 352 fichiers avec du code sql pour migrer ma base sur &lt;a href="http://www.postgresql.org/"&gt;PostgreSql&lt;/a&gt; qui se trouve être le plus beau des SGBDR qui soit (surtout avec son extension géographique &lt;a href="http://postgis.refractions.net/"&gt;Postgis)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-115019378574927541?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/115019378574927541/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=115019378574927541' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115019378574927541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/115019378574927541'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2006/06/les-commandes-shell-bash-sont-trop.html' title='Les commandes &quot;shell bash&quot; sont trop belles !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-112108839109669312</id><published>2005-07-11T15:04:00.000+02:00</published><updated>2007-07-10T10:09:12.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Traiter des valeurs avec perl dans un log</title><content type='html'>Il m'arrive régulièrement d'automatiser des tâches avec des scripts en perl ou en bash. Typiquement voici un exemple de petit script qui va effectuer une syncronisation avec rsync et garder une trace dans un log de tout problèmes éventuel.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/bash&lt;br /&gt;RSYNC="/usr/bin/rsync"&lt;br /&gt;OPTS="-va  --stats --partial --partial-dir=tmp --safe-links  --no-implied-dirs --timeout=300 --exclude-from=rsync_excluded.txt"&lt;br /&gt;SRC1="rsync://myserver.mydomain.org/mydirectory/"&lt;br /&gt;DST1="mylocal_directory/"&lt;br /&gt;echo "Started update at" `date` &gt;&gt; $0.log 2&gt;&amp;1&lt;br /&gt;logger -t rsync "re-rsyncing witm my remote rsync directory"&lt;br /&gt;${RSYNC} ${OPTS} ${SRC1} ${DST1} &gt;&gt; $0.log 2&gt;&amp;1&lt;br /&gt;echo "End: "`date` &gt;&gt; $0.log 2&gt;&amp;1 &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Okay, maintenant après quelque mois d'exploitation vous vous retrouverez avec un fichier contenant beaucoup d'informations. Si vous voulez récupérez une partie, et seulement une partie un petit bout de programme perl peut vous être plus utile qu'un simple grep. Dans mon cas j'avais au début de chaque session de rsync j'avais ma ligne avec la date du jour du style :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Started update at Mon Jan 21 08:16:58 2005&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;puis quelque lignes plus bas, le nombre de lignes étant variable d'un jour à l'autre, je me retrouve avec une ligne qui résume les transferts qqch du style :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;sent 20657 bytes  received 72055964 bytes  103931.68 bytes/sec&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ce que je voulais obtenir c'est une liste avec la date du transfert, suivi du nbre de bytes reçus, puis le taux de transfert et à la fin le numéro de la ligne du log pour un contrôle si nécessaire :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;2005-Jan-21   72'055'964 bytes received 103'931.68 bytes/sec [       407]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Et voici le copde correspondant :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;use strict;&lt;br /&gt;my $CurentDate;&lt;br /&gt;my @DateParts;&lt;br /&gt;my $TransferSpeed;&lt;br /&gt;my $BytesSend;&lt;br /&gt;my $BytesReceived;&lt;br /&gt;while (&lt;&gt;) {&lt;br /&gt;    if (m/Started update at (.*)/gi) {&lt;br /&gt;        @DateParts = split(/ /,$1);&lt;br /&gt;        $CurentDate = sprintf("%04s-%03s-%02s",$DateParts[4],$DateParts[1],$DateParts[2]);&lt;br /&gt;    }&lt;br /&gt;    if (m/\D+(\d+) bytes  received (\d+) bytes  ([0-9.]+) bytes\/sec/gi) {&lt;br /&gt;        $BytesSend = PrintStringWithThousandSeparator($1);&lt;br /&gt;        $BytesReceived = PrintStringWithThousandSeparator($2); # bytes /1024 = Kbytes&lt;br /&gt;        $TransferSpeed = PrintStringWithThousandSeparator($3);&lt;br /&gt;        printf("%12s\t%15s bytes received\t%10s bytes/sec\t[%10s]\n", $CurentDate,$BytesReceived,$TransferSpeed,$.);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub PrintStringWithThousandSeparator&lt;br /&gt;{&lt;br /&gt;    my $Newtext = $_[0];&lt;br /&gt;    $Newtext =~ s/(?&lt;=\d)(?=(?:\d\d\d)+(?!\d))/'/g;&lt;br /&gt;    return $Newtext;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-112108839109669312?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/112108839109669312/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=112108839109669312' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/112108839109669312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/112108839109669312'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2005/07/traiter-des-valeurs-avec-perl-dans-un.html' title='Traiter des valeurs avec perl dans un log'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-112005422263940815</id><published>2005-06-29T16:09:00.000+02:00</published><updated>2007-07-10T10:17:56.336+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Obtenir la liste des paquetages "ebuilds" sous Gentoo</title><content type='html'>&lt;a href="www.gentoo.org" border=0&gt;&lt;img src="http://www.gentoo.org/images/icon-penguin.png" align="left" border=0&gt;&lt;/a&gt;&lt;br /&gt;Quand on utilise la distribution &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt; sur plusieurs serveurs comme c'est le cas en ce qui me concerne, il peut être intéressant de retrouver rapidement la liste des paquetages wue l'on &lt;i&gt;emerger&lt;/i&gt; par le passé.&lt;br /&gt;Bien sur certain dirons qu'il suffit de regarder le contenu du "world" et faire un :&lt;br /&gt;&lt;code&gt;less /var/lib/portage/world&lt;/code&gt;&lt;br /&gt;pour voir la liste des paquetages installé expressement sur cette machine...&lt;BR&gt;&lt;br /&gt;Sauf que bien souvent on aimerait bien avoir un peu plus d'informations, c'est pour cela que j'utilise les outils du paquetage gentoolkit notamment l'utilitaire qpkg qui permet d'obtenir des informations sur un paquetages précis. &lt;BR&gt;&lt;br /&gt;Donc vous pouvez installer le paquetage gentoolkit avec un :&lt;br /&gt;&lt;code&gt;emerge -v gentoolkit&lt;/code&gt;&lt;br /&gt;puis ensuite vous puvez voir tout ce qui a été installé en lançant un :&lt;br /&gt;&lt;code&gt;equery f gentoolkit&lt;/code&gt;&lt;br /&gt;ce qui va vous lister les fichiers contenus dans le paquetage en question.&lt;br /&gt;Comme le but de toute l'opération était de pouvoir ressortir plus d'onformations sur les paquetages présents dans votre machine (world file), on va utiliser notre langage de choc pour résoudre ce petit problème et afficher pour chaque paquetage le nom et la version, le site web et la description du paquetage.Ci après le script perl que vous pouvez stocker dans votre $home/bin pour des appels ultérieurs simplifié.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;@packages=qx(sort /var/lib/portage/world);&lt;br /&gt;foreach $package (@packages) {&lt;br /&gt; # qpkg comes from gentoolkit&lt;br /&gt; $info = qx(qpkg -i -I -v -nc $package); &lt;br /&gt; $info =~ /(.*)\n([^\[]+)(.*)\n(.*)/;&lt;br /&gt; print "\n[$1] $2\nWEB :\t$3\n$4\n";&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Le code en question ne fait rien de bien extraordinaire, il récupére le contenu trié du fichier world dans un tableau @packages, puis il parcoure ce tableau et pour chaque élément utilise la commande qpkg pour récupérer les infos, une regular expression plus loin on affiche à notre convenance les 3 éléments qui nous intéressent comme bon nous semble.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-112005422263940815?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/112005422263940815/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=112005422263940815' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/112005422263940815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/112005422263940815'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2005/06/obtenir-la-liste-des-paquetages.html' title='Obtenir la liste des paquetages &quot;ebuilds&quot; sous Gentoo'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-110978230539137258</id><published>2005-03-02T17:23:00.000+01:00</published><updated>2006-10-19T08:35:04.752+02:00</updated><title type='text'>Dans la jungle des blogs !</title><content type='html'>&lt;a href="http://www.google.com" target="_blank"&gt;&lt;br /&gt;&lt;img src="http://www.google.ch/images/google_80wht.gif" alt="Google search"&gt;&lt;/a&gt;&lt;br /&gt;Waouhh, il est très difficile de comprendre la logique de google, j'en étais à ma Xième tentative d'enregistrement de mon blog sur google quand j'ai commencé à sérieusement me demander si le moteur d'indexation de &amp;#0171;Gogol&amp;#0187; n'était pas un peu inspiré de la logique floue voire du mouvement brownien...&lt;br /&gt;En effet il semble parfois impossible de faire fonctionner ce maudit moteur pour qu'il indexe mon blog. &lt;br /&gt;Damned ! &lt;br /&gt;Je commence sérieusement à douter de l'engin, il faut que je me veille avant de basculer dans le côté obscur de la Force...&lt;br /&gt;&lt;br /&gt;Du coup j'ai voulu vérifier au niveau des autres blogs comment cela se passe, et dans mes pérégrinations je suis tombé sur &lt;a href="http://www.blogwise.com/" target="_blank"&gt;blogwise&lt;/a&gt; que je trouve assez cool. L'idée d'indexer et de classer des blogs uniquement me semble être une tâche titanesque, il y a quasiment 40'000 blogs sur ce site, mais comment assuré un minimum de pertinence.&lt;br /&gt;&lt;a href="http://www.blogwise.com/" target="_blank"&gt;&lt;img src="http://www.blogwise.com/buttons/88_33_4.gif" alt="Blogwise - blog directory" border="1" height="33" width="88" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Et dans le genre débile on a les plus de 6'176'200 blogs annoncés comme indexés sur blo.gs pour seulement 10'863 utilisateurs ... Vous avez une calculatrice ? non ?&lt;br /&gt;Et bien cela fait une moyenne de &lt;big&gt;569 blogs par utilisateurs&lt;/big&gt; &lt;br /&gt;Totalement crétin, et le site est à vendre ? Cool ! bon débaras.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-110978230539137258?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/110978230539137258/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=110978230539137258' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110978230539137258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110978230539137258'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2005/03/dans-la-jungle-des-blogs.html' title='Dans la jungle des blogs !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-110916537811677365</id><published>2005-02-23T11:47:00.000+01:00</published><updated>2007-07-10T10:09:12.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl : Comment afficher des "gros" chiffres avec un séparateur de milliers ?</title><content type='html'>Hummm quand il s'agit de lire des très grand chifres à l'écran, il n'est pas très pratique de devoir compter à la main sur l'écran les groupes de milliers...&lt;br /&gt;Et donc un séprateur de millier prend tout son sens :&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1'456'987 est plus lisible que 1456987 !&lt;/span&gt;&lt;br /&gt;c'est ainsi que Perl devient votre petit à petit votre alié quotidien.&lt;br /&gt;Car à l'aide des expressions régulières et de l'opérateur de substitution il est très facile d'obtenir l'effet escompté en 3 lignes !&lt;br /&gt;En éxécutant le code ci-dessous on obtient .&lt;br /&gt;&lt;span style="font-style:italic;"&gt;My personal fortune is 1'234'567 US$&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;use strict;&lt;br /&gt;my $test = "My personal fortune is 1234567 US\$";&lt;br /&gt;print PrintStringWithThousandSeparator($test);&lt;br /&gt;&lt;br /&gt;sub PrintStringWithThousandSeparator&lt;br /&gt;{&lt;br /&gt;    my $Newtext = $_[0];&lt;br /&gt;    $Newtext =~ s/(?&lt;=\d)(?=(?:\d\d\d)+(?!\d))/'/g;&lt;br /&gt;    return $Newtext;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-110916537811677365?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/110916537811677365/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=110916537811677365' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110916537811677365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110916537811677365'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2005/02/perl-comment-afficher-des-gros.html' title='Perl : Comment afficher des &quot;gros&quot; chiffres avec un séparateur de milliers ?'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-110865551364936715</id><published>2005-02-17T16:24:00.000+01:00</published><updated>2007-07-10T10:16:08.750+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>ReverseProxy avec Apache</title><content type='html'>Quand on veut permettre à un utilisateur lambda d'accèder sur un reseau public d'accèder à des informations sur un site web 192.168.50.120 situé dans un réseau privé, deux possibiliés s'offre à nous:&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;On peut prendre  un serveur Linux  et avec deux cartes réseau :&lt;br /&gt;   &lt;ul&gt;       &lt;li&gt;une côté publique - eth0[10.163.200.9],&lt;/li&gt;       &lt;li&gt;une côté privé       - eth1[192.168.50 77])&lt;/li&gt;     &lt;/ul&gt; l'utiliser comme un Firewall avec les iptables et une règle DNAT pour ouvrir un port sur l'interface publique du firewall qui redirigera les demandes sur le serveur web du réseau privé exemple:&lt;br /&gt;   &lt;ul&gt;       &lt;li&gt;echo 1&gt; /proc/sys/net/ipv4/ip_forward&lt;/li&gt;       &lt;li&gt;iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.163.200.9  --dport 80 -j DNAT --to-destination 192.168.50.120&lt;br /&gt;     &lt;/li&gt;     &lt;/ul&gt;  &lt;/li&gt;   &lt;li&gt;Ou on peut configurer un reverse proxy avec Apache ou Squid sur le Firewall&lt;/li&gt; &lt;/ol&gt; Dans le deuxieme cas on a plus de souplesse car on peut intervenir sur chaque url par exemple avec mod_rewite&lt;br /&gt;mais tout d'abord la config nécessaire dans le fichier config apache&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;IfModule mod_proxy.c&amp;gt;&lt;br /&gt;    ProxyRequests Off&lt;br /&gt;    &amp;lt;Proxy *&amp;gt;&lt;br /&gt;        Order deny,allow&lt;br /&gt;        Deny from all&lt;br /&gt;       Allow from 10.163.100.44&lt;br /&gt;    &amp;lt;/Proxy&amp;gt;&lt;br /&gt; ProxyPass / http://192.168.50.90/&lt;br /&gt; ProxyPassReverse / http://192.168.50.90/&lt;br /&gt; ProxyPreserveHost On&lt;br /&gt;&amp;lt;/IfModule&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Ne pas oublier d'utiliser HTTP 1.1 sur le navigateur...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-110865551364936715?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/110865551364936715/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=110865551364936715' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110865551364936715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110865551364936715'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2005/02/reverseproxy-avec-apache.html' title='ReverseProxy avec Apache'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-110839744485631113</id><published>2005-02-14T16:58:00.000+01:00</published><updated>2006-10-19T08:35:04.546+02:00</updated><title type='text'>Du code portable Win32-Linux</title><content type='html'>Pour obtenir très rapidement du code utilisant du graphisme et fonctionnant aussi bien sous Linux que sous Microsoft, je dois dire que le couple &lt;a href="http://www.opengl.org"&gt;OpenGL&lt;/a&gt;/GLUT reste des valeurs sures à mes yeux.&lt;br /&gt;Ainsi le code ci-après fonctionne et se compile pil-poil sous win32 et sous Linux:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;/* My First GLUT chtit bout de code&lt;br /&gt;pour compiler sous linux : gcc -o cgglut01 cgglut01.cpp -lglut -lX11 -lGL -lGLU&lt;br /&gt;*/&lt;br /&gt;#include &lt;gl/glut.h&gt;&lt;br /&gt;void display(void)&lt;/span&gt;&lt;/span&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;{&lt;br /&gt;   glClear (GL_COLOR_BUFFER_BIT);&lt;br /&gt;// draw blue rectangle with corners at&lt;br /&gt;// (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) &lt;br /&gt;   glColor3f (0.0, 0.0, 1.0);&lt;br /&gt;   glBegin(GL_POLYGON);&lt;br /&gt;      glVertex3f (0.25, 0.25, 0.0);&lt;br /&gt;      glVertex3f (0.75, 0.25, 0.0);&lt;br /&gt;      glVertex3f (0.75, 0.75, 0.0);&lt;br /&gt;      glVertex3f (0.25, 0.75, 0.0);&lt;br /&gt;   glEnd();&lt;br /&gt;&lt;br /&gt;// start processing buffered OpenGL routines &lt;br /&gt;   glFlush ();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void init (void)&lt;br /&gt;{&lt;br /&gt;   glClearColor (0.0, 0.0, 0.0, 0.0);// select clearing color background&lt;br /&gt;/* initialize viewing values  */&lt;br /&gt;   glMatrixMode(GL_PROJECTION);&lt;br /&gt;   glLoadIdentity();&lt;br /&gt;   glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(int argc, char** argv)&lt;br /&gt;{&lt;br /&gt;   glutInit(&amp;argc, argv);&lt;br /&gt;   //Declare initial window display mode (single buffer and RGBA)&lt;br /&gt;   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA);&lt;br /&gt;   glutInitWindowSize (500 , 500);&lt;br /&gt;   glutInitWindowPosition (100, 100);&lt;br /&gt;   glutCreateWindow ("My First GLUT Window");&lt;br /&gt;   init ();&lt;br /&gt;   glutDisplayFunc(display); //Register callback function to display graphics.&lt;br /&gt;   glutMainLoop(); //Enter main loop and process events.&lt;br /&gt;   return 0;   /* ANSI C requires main to return int. */&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Et sous Mikro$oft le mieux c'est d'utiliser l'excellent &lt;a href="http://www.bloodshed.net/devcpp.html"&gt;dev-cpp&lt;/a&gt;&lt;br /&gt;et d'utiliser le package glut disponible sur &lt;a href="http://devpaks.org/"&gt;http://devpaks.org/&lt;/a&gt;&lt;br /&gt;ou directement &lt;a href="http://www.nigels.com/glt/devpak/glut.3.7.6+.DevPak"&gt;ici&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-110839744485631113?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/110839744485631113/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=110839744485631113' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110839744485631113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/110839744485631113'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2005/02/du-code-portable-win32-linux.html' title='Du code portable Win32-Linux'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-109942060107870925</id><published>2004-11-02T18:52:00.000+01:00</published><updated>2007-07-10T10:15:01.463+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache - Action : la magie de l'interception</title><content type='html'>En utilisant Apache et avec des clients IE on tombe parfois sur des abérations à la MiKro$oft!&lt;br /&gt;Par exemple &lt;span style="font-style: italic;"&gt;ce fichier pdf qui plantait IE alors qu'il s'ouvre parfaitement bien dans &lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.getfirefox.com/"&gt;&lt;img src="http://www.spreadfirefox.com/community/images/affiliates/Buttons/110x32/get.gif" alt="Get Firefox!" title="Get Firefox!" align="left" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mozilla.org/products/firefox/"&gt;Firefox&lt;/a&gt;  le même genre de mésaventure pouvant se produire avec des fichiers tiff, et qui n'a pas connu la joie du rennomage d'un fichier CGI sur un serveur web de Programme.pl ou Programme.cgi en Programme.txt afin que IE veuille bien ne pas tenter le download mais se contenter d'afficher le texte retourné....&lt;br /&gt;Bien souvent tout cela est souvent du à la méthode pour le moins peu ortodoxe de Microsoft de traiter les headers Content-type (&lt;a href="http://ppewww.ph.gla.ac.uk/%7Eflavell/www/content-type.html"&gt;voici une excelente page explique la saga IE sur ce point...&lt;/a&gt;)&lt;br /&gt;Quand je dit traiter comprenez ignorer , ainsi sur &lt;a href="http://msdn.microsoft.com/workshop/networking/moniker/overview/appendix_a.asp"&gt;MSDN Microsoft&lt;/a&gt; nous explique que :&lt;br /&gt; &lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;..If the server-provided MIME type is either known or ambiguous, the buffer is scanned in an attempt to verify or obtain a MIME type from the actual content. If a positive match is found (one of the hard-coded tests succeeded), t&lt;span style="font-weight: bold;"&gt;his MIME type is immediately returned as the final determination, overriding the server-provided MIME type&lt;/span&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Ben voyons ! normal quoi ! On va quand même pas  faire confiance aux webmasters qui configure un content-type correct, da'illeurs il n'y a que chez Kro$oft qu'on sait ce qui est correct et bon pour le gentil utilisateur de IE. Accessoirement Mikro$oft recommande de ne pas utiliser Adobe PDF comme ça point de soucis...&lt;br /&gt;&lt;br /&gt;Enfin bref, il se trouve que tout ceci est du vécu. Et en recherchant un moyen de contourner le problème (comme d'hab)  j'ai constaté qu'avec  un simple php de trois ligne et Apache on pouvait faire des miracles .&lt;br /&gt; &lt;div style="font-family: times new roman;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="727351514-02112004"&gt;&lt;span style="font-family: trebuchet ms;"&gt;en utilisant ce code php &lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="font-family: times new roman;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span class="727351514-02112004"&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div&gt;&lt;span class="727351514-02112004"&gt;&lt;span style="font-family:&amp;quot;Lucida Grande&amp;quot;;font-size:130%;"&gt;&lt;span style="font-family: times new roman;font-size:100%;" &gt;     &lt;br /&gt;&lt;pre&gt; &lt;br /&gt;      1 &lt; ?php&lt;br /&gt;      2 // on veut sortir du PDF&lt;br /&gt;      3 header('Content-type:  application/pdf');&lt;br /&gt;      4&lt;br /&gt;      5 // On veut appeller le fichier test.pdf  et FORCER le download&lt;br /&gt;      6 header('Content-Disposition: attachment;  filename="test.pdf"');&lt;br /&gt;      7&lt;br /&gt;      8 // The PDF d'origine est dans  original.pdf&lt;br /&gt;      9 readfile('original.pdf');&lt;br /&gt;     10  ?&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;br /&gt; On peut à l'aise blaise forcer l'ouverture de la case de dialogue Ouvrir/enregistrer dans le fameux IE dont il est question, ce qui bien souvent aide déj à pas mal. Le gag c'est que sans la ligne 6 il se trouve que dans mon cas le fichier passait aussi comme une fleur, alors qu'en ouvrant le fichier d'origine sans passer par du php c'était «&lt;span style="font-style: italic;"&gt;BigBadaBoum�&lt;/span&gt;»�.&lt;br /&gt;HuHummm ...  Il faudrait un moyen de dire a Apache :&lt;br /&gt;&lt;blockquote&gt;Si on te demande un fichier de type .xxx alors passe donc par la case de l'oncle Tom qui va te servir ce fichier à la sauce du Sud...&lt;/blockquote&gt;&lt;br /&gt;Et bien il se trouve que cela existe dans la config apache du répertoire au vous voulez faire ce test il faut que vous ajoutier :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  AddHandler   cgil-pdf .xxx&lt;br /&gt;  Action cgil-pdf "/temp/cgpdf.php?pdffile="&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;puis il faut créer votre fichier cgpdf.php avec qqchose du style de :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;      1 &lt; ?php&lt;br /&gt;      2 header('Content-type: application/pdf');&lt;br /&gt;      3 $pdffile=$_SERVER["DOCUMENT_ROOT"] . $_REQUEST["pdffile"];&lt;br /&gt;      4 readfile($pdffile);&lt;br /&gt;      5 ?&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Et voila !!!&lt;br /&gt;en cliquant sur un fichier pdf qui s'appelle MonBofichier.pdf.xxx on le voit qui s'affiche sous nos yeux émerveillés.&lt;br /&gt;et le gag c'est qu'avec la ligne :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  AddHandler   cgil-pdf .pdf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On traite le pdf avant de le balancer au IE récalcitrant&lt;br&gt;&lt;br /&gt;C'est Bô Apache &lt;br /&gt;&lt;a href='http://httpd.apache.org/'&gt;&lt;img src='http://httpd.apache.org/images/apache_pb.gif' align=center&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-109942060107870925?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/109942060107870925/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=109942060107870925' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/109942060107870925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/109942060107870925'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/11/apache-action-la-magie-de.html' title='Apache - Action : la magie de l&apos;interception'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-109941779523398384</id><published>2004-11-02T18:45:00.000+01:00</published><updated>2007-07-10T10:19:08.006+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><title type='text'>Gentoo sur un AMD64  Opteron</title><content type='html'>&lt;img src='http://www.gentoo.org/images/icons/l33t_LOG_amd.png'&gt;Au moment de l'installation souvent la détection de matériel n'est pas effectuée aussi est-il nécessaire de faire un petit :&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;modprobe e100&lt;/span&gt; --&gt; &lt;span style="font-style: italic;"&gt;pour une carte réseau intel&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;modprobe  ide_disk   &lt;/span&gt;--&gt; &lt;span style="font-style: italic;"&gt;pour un disque ide&lt;br /&gt;sata_sil et libata pour un disque SATA etc...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-109941779523398384?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/109941779523398384/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=109941779523398384' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/109941779523398384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/109941779523398384'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/11/gentoo-sur-un-amd64-opteron.html' title='Gentoo sur un AMD64  Opteron'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-109941740458036016</id><published>2004-11-02T18:34:00.000+01:00</published><updated>2007-07-10T10:19:08.006+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gentoo'/><title type='text'>Installer Gentoo avec un clavier  Suisse romand</title><content type='html'>&lt;img src="http://www.gentoo.org/images/icons/l33t_LOG_blue.png" align="left" /&gt;Quand on se lance dans une installation d'une &lt;a href="http://www.gentoo.org/"&gt;Gentoo &lt;/a&gt;(en stage1 bien entendu...) il faut utiliser un petit&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;loadkeys fr_CH&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;pour pouvoir utiliser pleinement les claviers de nos contrées&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-109941740458036016?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/109941740458036016/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=109941740458036016' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/109941740458036016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/109941740458036016'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/11/installer-gentoo-avec-un-clavier.html' title='Installer Gentoo avec un clavier  Suisse romand'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108998873622726467</id><published>2004-07-16T16:30:00.000+02:00</published><updated>2006-10-19T08:35:04.249+02:00</updated><title type='text'>Un reverse proxy pour que ton web soit plus sur !</title><content type='html'>Avec un reverse proxy ton serveur web peut répondre plus vite en cachant les réponses, en plus il peut rediriger sur un ou plusieurs serveurs différents des requêtes web.&lt;br /&gt; Typiquement on peut utiliser &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt; avec le &lt;a href="http://httpd.apache.org/docs-2.0/mod/mod_proxy.html"&gt;mod_proxy &lt;/a&gt;&lt;br /&gt; Mais il faut aussi des projets tels que &lt;a href="http://www.apsis.ch/pound/"&gt;pound &lt;/a&gt;&lt;br /&gt; Ou encore &lt;a href="http://www.modsecurity.org/"&gt;mod_security&lt;/a&gt;&lt;br /&gt; Il y à même &lt;a href="http://www.linux-mag.com/2003-08/lamp_01.html"&gt;squid qui a été utilisé comme reverse proxy&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108998873622726467?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108998873622726467/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108998873622726467' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108998873622726467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108998873622726467'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/un-reverse-proxy-pour-que-ton-web-soit.html' title='Un reverse proxy pour que ton web soit plus sur !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108998094698178575</id><published>2004-07-16T14:20:00.000+02:00</published><updated>2007-07-10T10:16:08.750+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache Virtual host</title><content type='html'>On désire parfois créer sur le même serveur web plusieurs sites différents. En utilisant dns on modifie notre config comme suit :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cat /etc/bind/db.labo.org&lt;br /&gt;$TTL    1H&lt;br /&gt;@       IN      SOA     ns1.labo.org. root.labo.org. (&lt;br /&gt;                     2004071801         ; Serial&lt;br /&gt;                             1H         ; Refresh&lt;br /&gt;                             1H         ; Retry&lt;br /&gt;                             1H         ; Expire&lt;br /&gt;                             1D )       ; Negative Cache TTL&lt;br /&gt;;&lt;br /&gt;@       IN      NS      ns1.labo.org.&lt;br /&gt;@       IN      NS      ns2.labo.org.&lt;br /&gt;&lt;br /&gt;@       IN      MX 10   ns1.labo.org.&lt;br /&gt;&lt;br /&gt;ns1     IN      A       10.0.0.4&lt;br /&gt;box3    IN      A       10.0.0.3&lt;br /&gt;fw1     IN      A       10.0.0.1&lt;br /&gt;ns2     IN      A       10.0.0.2&lt;br /&gt;box4    IN      A       10.0.0.19&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fw2     IN      CNAME   ns2&lt;br /&gt;red     IN      CNAME   box3&lt;br /&gt;blue    IN      CNAME   box4&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;ceci va nous permettre d'avoir des alias qui pointent sur notre serveur, maintenant il faut pouvoir les détecter dans apache. On traite cela dans le fichier &lt;b&gt;/etc/apache/httpd.conf &lt;/b&gt;dans lequel on va rajouter une section virtualhost comme suit:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;NameVirtualHost red&lt;br /&gt;&amp;lt;virtualhost _default=""&gt;&lt;virtualhost red="" gt=""&gt;&lt;br /&gt;    ServerAdmin webmaster@red.labo.org&lt;br /&gt;    DocumentRoot /var/www2/&lt;br /&gt;    ServerName red&lt;br /&gt;    ErrorLog /var/log/apache/redserver-error.log&lt;br /&gt;    CustomLog /var/log/apache/redserver-access.log common&lt;br /&gt;&amp;lt;/virtualhost&gt;&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Et voila le travail !&lt;br /&gt;Vous pouvez maintenant accéder aux deux contenus avec &lt;br /&gt;http://box3/ pour le contenu de /var/www/&lt;br /&gt;http://red/ pour le contenu de /var/www2/&lt;/virtualhost&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108998094698178575?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108998094698178575/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108998094698178575' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108998094698178575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108998094698178575'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/apache-virtual-host.html' title='Apache Virtual host'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108989469248503553</id><published>2004-07-15T14:26:00.000+02:00</published><updated>2006-10-19T08:35:04.133+02:00</updated><title type='text'>messagerie traitement avec procmail</title><content type='html'>Avec procmail on peut faire des traitements automatiques, ainis en ajoutant dans le home directory un fichier .forward qui va juste "pointer" sur procmail&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cat /home/cgil/.forward&lt;br /&gt;"|IFS=' '&amp;&amp;exec /usr/bin/procmail -f-||exit 75 cgil"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;et en créant ensuite un fichier .procmailrc qui peut lui, comme ici archiver des mail et faire une réponse automatique&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cat /home/cgil/.procmailrc&lt;br /&gt;:0c:&lt;br /&gt;$HOME/mail.backup&lt;br /&gt;&lt;br /&gt;:0&lt;br /&gt;* !^X-Loop: cgil@labo.org&lt;br /&gt;| (formail -rk -A "X-Loop: cgil@labo.org" -A "Precedence: auto"; echo "Hello Thank you for your mail"; echo "I will answer as soon as possible"; ) | $SENDMAIL -t -oi&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108989469248503553?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108989469248503553/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108989469248503553' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108989469248503553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108989469248503553'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/messagerie-traitement-avec-procmail.html' title='messagerie traitement avec procmail'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108988479676852653</id><published>2004-07-15T11:32:00.000+02:00</published><updated>2006-10-19T08:35:04.076+02:00</updated><title type='text'>La Messagerie, POP3 sous Linux</title><content type='html'>Tout comme pour SMTP il y a une quantité impressionante de variantes de serveurs POP3 et IMAP a disposition pour Linux. Il faut prendre garde au fait que POP3 transmet le user et le mot de passe en clair (dsnif et ngrep sont de redoutables ennemis à ce niveau...)&lt;br /&gt;Citons les serveurs et outils tel que cyrus, teapot, fetchmail etc..&lt;br /&gt;Le sujet de la messagerie sous Linux est manifestement un vaste sujet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108988479676852653?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108988479676852653/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108988479676852653' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108988479676852653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108988479676852653'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/la-messagerie-pop3-sous-linux.html' title='La Messagerie, POP3 sous Linux'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108988006616442152</id><published>2004-07-15T09:43:00.000+02:00</published><updated>2006-10-19T08:35:04.017+02:00</updated><title type='text'>La messagerie SMTP sous Linux</title><content type='html'>Il existe plusieurs variantes de programmes de messagerie, du plus ancien et plus compliqué comme sendmail au plus "simple" comme exim en passant par postfix et qmail.&lt;br /&gt;Avec mutt on a un cllient en mode console  pour les messages.&lt;br /&gt;En fait il faut installer et configurer un de ces programmes dans mon cas j'utilise postfix sous debian. Il faut que dns soit configuré et opérationnel ! Il faut typiquement ajouter l'entrée MX :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;cat /etc/bind/db.labo.org&lt;br /&gt;$TTL    1H&lt;br /&gt;@       IN      SOA     ns1.labo.org. root.labo.org. (&lt;br /&gt;                     2004071504         ; Serial&lt;br /&gt;                             1H         ; Refresh&lt;br /&gt;                             1H         ; Retry&lt;br /&gt;                             1H         ; Expire&lt;br /&gt;                             1D )       ; Negative Cache TTL&lt;br /&gt;;&lt;br /&gt;@       IN      NS      ns1.labo.org.&lt;br /&gt;@       IN      NS      ns2.labo.org.&lt;br /&gt;&lt;br /&gt;@       IN      MX 10   ns1.labo.org.&lt;br /&gt;&lt;br /&gt;ns1     IN      A       10.0.0.4&lt;br /&gt;box3    IN      A       10.0.0.3&lt;br /&gt;fw1     IN      A       10.0.0.1&lt;br /&gt;ns2     IN      A       10.0.0.2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;fw2     IN      CNAME   ns2&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;Et bien sur il faut la partie reverse dns&lt;/strong&gt;&lt;pre&gt;&lt;br /&gt;cat /etc/bind/db.10.in-addr.arpa&lt;br /&gt;$TTL    1H&lt;br /&gt;@       IN      SOA     ns1.labo.org. root.labo.org. (&lt;br /&gt;                     2004071403         ; Serial&lt;br /&gt;                             1H         ; Refresh&lt;br /&gt;                             1H         ; Retry&lt;br /&gt;                             1H         ; Expire&lt;br /&gt;                             1D )       ; Negative Cache TTL&lt;br /&gt;&lt;br /&gt;@       IN      NS      ns1.labo.org.&lt;br /&gt;@       IN      NS      ns2.labo.org.&lt;br /&gt;@       IN      MX 10   ns1.labo.org.&lt;br /&gt;&lt;br /&gt;4.0.0.10.in-addr.arpa.  IN      PTR     ns1.labo.org.&lt;br /&gt;3.0.0.10.in-addr.arpa.  IN      PTR     box3.labo.org.&lt;br /&gt;1.0.0.10.in-addr.arpa.  IN      PTR     fw1.labo.org.&lt;br /&gt;2.0.0.10.in-addr.arpa.  IN      PTR     ns2.labo.org.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On peut vérifier que tout est okay avecun chtit dig&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;dig labo.org mx&lt;br /&gt;&lt;br /&gt;; &lt;&lt;&gt;&gt; DiG 9.2.4rc5 &lt;&lt;&gt;&gt; labo.org mx&lt;br /&gt;;; global options:  printcmd&lt;br /&gt;;; Got answer:&lt;br /&gt;;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 52731&lt;br /&gt;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2&lt;br /&gt;&lt;br /&gt;;; QUESTION SECTION:&lt;br /&gt;;labo.org.                      IN      MX&lt;br /&gt;&lt;br /&gt;;; ANSWER SECTION:&lt;br /&gt;labo.org.               3600    IN      MX      10 ns1.labo.org.&lt;br /&gt;&lt;br /&gt;;; AUTHORITY SECTION:&lt;br /&gt;labo.org.               3600    IN      NS      ns1.labo.org.&lt;br /&gt;labo.org.               3600    IN      NS      ns2.labo.org.&lt;br /&gt;&lt;br /&gt;;; ADDITIONAL SECTION:&lt;br /&gt;ns1.labo.org.           3600    IN      A       10.0.0.4&lt;br /&gt;ns2.labo.org.           3600    IN      A       10.0.0.2&lt;br /&gt;&lt;br /&gt;;; Query time: 2 msec&lt;br /&gt;;; SERVER: 10.0.0.4#53(10.0.0.4)&lt;br /&gt;;; WHEN: Thu Jul 15 09:25:36 2004&lt;br /&gt;;; MSG SIZE  rcvd: 110&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Et ensuite on peut tester avec un simple telnet&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;telnet ns1 25&lt;br /&gt;Trying 10.0.0.4...&lt;br /&gt;Connected to ns1.labo.org.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;220 localhost ESMTP Postfix (Debian/GNU)&lt;br /&gt;ehlo&lt;br /&gt;501 Syntax: EHLO hostname&lt;br /&gt;ehlo tutu.org&lt;br /&gt;250-localhost&lt;br /&gt;250-PIPELINING&lt;br /&gt;250-SIZE 10240000&lt;br /&gt;250-VRFY&lt;br /&gt;250-ETRN&lt;br /&gt;250 8BITMIME&lt;br /&gt;mail from: &lt;toto@tutu.org&gt;&lt;br /&gt;250 Ok&lt;br /&gt;rcpt to: &lt;titi@lolo.com&gt;&lt;br /&gt;554 &lt;c@gil.com&gt;: Relay access denied&lt;br /&gt;rcpt to: &lt;root@labo.org&gt;&lt;br /&gt;250 Ok&lt;br /&gt;data&lt;br /&gt;354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;&lt;br /&gt;TO : root.labo.org&lt;br /&gt;FROM : toto@tutu.org&lt;br /&gt;SUBJECT : testing&lt;br /&gt;hello from toto...&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;il faut absolument vérifier comme ci-dessus que votre serveur ne permet pas de faire du mail relay !&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Il faut "vraiment" lire la doc et effectuer la configuration par exemple dans /etc/postfix/mail.cf il faut rajouter votre propre réseau dans la ligne "mynetworks = 127.0.0.0/8,10.0.0.0/24" afin que vous puissiez envoyer des email depuis les postes du réseau.&lt;br /&gt;Un bon firewall devant entre votre serveur et internet prend tout son sens&lt;br /&gt;et si vous voyez plein de tentatives de connections sur des ports bizares vérifier si&lt;br /&gt;le port en question correspond à un troyan &lt;a href="http://www.simovits.com/sve/nyhetsarkiv/1999/nyheter9902.html"&gt;connu sur une des listes existantes&lt;/a&gt; comme celle chez &lt;a href="http://www.proxyblind.org/trojan.shtml"&gt;proxy blind&lt;/a&gt;&lt;br /&gt;Comme déjà dit il existe nombre de client tel que mutt en mode console ou sylpheed-claws et evolution en mode graphique&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108988006616442152?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108988006616442152/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108988006616442152' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108988006616442152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108988006616442152'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/la-messagerie-smtp-sous-linux.html' title='La messagerie SMTP sous Linux'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108981261589671995</id><published>2004-07-14T15:39:00.000+02:00</published><updated>2006-10-19T08:35:03.955+02:00</updated><title type='text'>DHCP une adresse IP automatique</title><content type='html'>Pour que les machines de notre petit réseau obtiennent une adr ip automatiquement on va utiliser du dhcp donc on installe dhcpd3 serveur et on configure dans le fichier&lt;br /&gt;&lt;strong&gt;/etc/dhcp3/dhcpd.conf&lt;/strong&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#&lt;br /&gt;# Sample configuration file for ISC dhcpd for Debian&lt;br /&gt;#&lt;br /&gt;# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $&lt;br /&gt;#&lt;br /&gt;# option definitions common to all supported networks...&lt;br /&gt;option domain-name "labo.org";&lt;br /&gt;option domain-name-servers ns1.labo.org, ns2.labo.org;&lt;br /&gt;default-lease-time 600;&lt;br /&gt;max-lease-time 7200;&lt;br /&gt;&lt;br /&gt;# If this DHCP server is the official DHCP server for the local&lt;br /&gt;# network, the authoritative directive should be uncommented.&lt;br /&gt;#authoritative;&lt;br /&gt;&lt;br /&gt;# Use this to send dhcp log messages to a different log file (you also&lt;br /&gt;# have to hack syslog.conf to complete the redirection).&lt;br /&gt;log-facility local7;&lt;br /&gt;&lt;br /&gt;# No service will be given on this subnet, but declaring it helps the&lt;br /&gt;# DHCP server to understand the network topology.&lt;br /&gt;&lt;br /&gt;# This is a very basic subnet declaration.&lt;br /&gt;subnet 10.0.0.0 netmask 255.255.255.0 {&lt;br /&gt;  range 10.0.0.10 10.0.0.20;&lt;br /&gt;  option routers fw1.labo.org;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108981261589671995?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108981261589671995/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108981261589671995' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108981261589671995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108981261589671995'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/dhcp-une-adresse-ip-automatique.html' title='DHCP une adresse IP automatique'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108980946839749599</id><published>2004-07-14T14:28:00.000+02:00</published><updated>2006-10-19T08:35:03.890+02:00</updated><title type='text'>DNS - exemples de fichiers de config réseau local</title><content type='html'>l'idée c'est qu'on veut configurer un chtit caching name server sur un réseau local.&lt;br /&gt;Donc on commence par installer bind9,puis en avant la configuration&lt;br /&gt;Dans le fichier named.conf&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;include "/etc/bind/named.conf.options";&lt;br /&gt;// prime the server with knowledge of the root servers&lt;br /&gt;zone "." {&lt;br /&gt;        type hint;&lt;br /&gt;        file "/etc/bind/db.root";&lt;br /&gt;};&lt;br /&gt;// be authoritative for the localhost forward and reverse zones, and for&lt;br /&gt;// broadcast zones as per RFC 1912&lt;br /&gt;zone "localhost" {&lt;br /&gt;        type master;&lt;br /&gt;        file "/etc/bind/db.local";&lt;br /&gt;};&lt;br /&gt;zone "127.in-addr.arpa" {&lt;br /&gt;        type master;&lt;br /&gt;        file "/etc/bind/db.127";&lt;br /&gt;};&lt;br /&gt;zone "0.in-addr.arpa" {&lt;br /&gt;        type master;&lt;br /&gt;        file "/etc/bind/db.0";&lt;br /&gt;};&lt;br /&gt;zone "255.in-addr.arpa" {&lt;br /&gt;        type master;&lt;br /&gt;        file "/etc/bind/db.255";&lt;br /&gt;};&lt;br /&gt;zone "com" { type delegation-only; };&lt;br /&gt;zone "net" { type delegation-only; };&lt;br /&gt;&lt;br /&gt;include "/etc/bind/named.conf.local";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;puis à la fin de named.conf est inclu le contenu de named.conf.local&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;zone "labo.org" {&lt;br /&gt;        type master;&lt;br /&gt;        file "/etc/bind/db.labo.org";&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;zone "10.in-addr.arpa" {&lt;br /&gt;        type master;&lt;br /&gt;        file "/etc/bind/db.10.in-addr.arpa";&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;maintenant db.labo.org&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$TTL    1H&lt;br /&gt;@       IN      SOA     ns1.labo.org. root.labo.org. (&lt;br /&gt;                     2004071402         ; Serial&lt;br /&gt;                             1H         ; Refresh&lt;br /&gt;                             1H         ; Retry&lt;br /&gt;                             1H         ; Expire&lt;br /&gt;                             1D )       ; Negative Cache TTL&lt;br /&gt;;&lt;br /&gt;@       IN      NS      ns1.labo.org.&lt;br /&gt;&lt;br /&gt;ns1     IN      A       10.0.0.4&lt;br /&gt;box3    IN      A       10.0.0.3&lt;br /&gt;fw1     IN      A       10.0.0.1&lt;br /&gt;fw2     IN      A       10.0.0.2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;et dans db.10.in-addr.arpa&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$TTL    1H&lt;br /&gt;@       IN      SOA     ns1.labo.org. root.labo.org. (&lt;br /&gt;                     2004071402         ; Serial&lt;br /&gt;                             1H         ; Refresh&lt;br /&gt;                             1H         ; Retry&lt;br /&gt;                             1H         ; Expire&lt;br /&gt;                             1D )       ; Negative Cache TTL&lt;br /&gt;&lt;br /&gt;@       IN      NS      ns1.labo.org.&lt;br /&gt;&lt;br /&gt;4.0.0.10.in-addr.arpa.  IN      PTR     ns1.labo.org.&lt;br /&gt;3.0.0.10.in-addr.arpa.  IN      PTR     box3.labo.org.&lt;br /&gt;1.0.0.10.in-addr.arpa.  IN      PTR     fw1.labo.org.&lt;br /&gt;2.0.0.10.in-addr.arpa.  IN      PTR     fw2.labo.org.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;On peut vérifier la syntaxe avec l'outil &lt;strong&gt;dlint&lt;/strong&gt;&lt;br /&gt;et bien sur penser a redemarrer bind9 avec&lt;br /&gt;&lt;strong&gt; /etc/init.d/bind9 restart&lt;/strong&gt;&lt;br /&gt;dans les postes clients il faut bien sur penser a modifier le fichier /etc/resolv.conf&lt;br /&gt;&lt;code&gt;&lt;br /&gt;search labo.org&lt;br /&gt;nameserver 10.0.0.4&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Et finalement il est intéressant de sécuriser un chouia notre dns en modifiant named.conf.options&lt;br /&gt;&lt;pre&gt;cat /etc/bind/named.conf.options&lt;br /&gt;options {&lt;br /&gt;        directory "/var/cache/bind";&lt;br /&gt;&lt;br /&gt;        // If there is a firewall between you and nameservers you want&lt;br /&gt;        // to talk to, you might need to uncomment the query-source&lt;br /&gt;        // directive below.  Previous versions of BIND always asked&lt;br /&gt;        // questions using port 53, but BIND 8.1 and later use an unprivileged&lt;br /&gt;        // port by default.&lt;br /&gt;&lt;br /&gt;        // query-source address * port 53;&lt;br /&gt;&lt;br /&gt;        // If your ISP provided one or more IP addresses for stable&lt;br /&gt;        // nameservers, you probably want to use them as forwarders.&lt;br /&gt;        // Uncomment the following block, and insert the addresses replacing&lt;br /&gt;        // the all-0's placeholder.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;forwarders {&lt;br /&gt;                192.168.7.254;&lt;br /&gt;        };&lt;br /&gt;&lt;br /&gt;        // forwarders {&lt;br /&gt;        //      0.0.0.0;&lt;br /&gt;        // };&lt;br /&gt;&lt;br /&gt;        auth-nxdomain no;    # conform to RFC1035&lt;br /&gt;        Version "None your business";&lt;br /&gt;        Allow-query     { 10.0.0.0/24; };&lt;br /&gt;        Allow-transfer  { 10.0.0.2;&lt;br /&gt;                          10.0.0.4;&lt;br /&gt;                        };&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108980946839749599?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108980946839749599/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108980946839749599' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108980946839749599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108980946839749599'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/dns-exemples-de-fichiers-de-config.html' title='DNS - exemples de fichiers de config réseau local'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108979818451950205</id><published>2004-07-14T11:32:00.000+02:00</published><updated>2006-10-19T08:35:03.833+02:00</updated><title type='text'>Des animations flash sous Linux</title><content type='html'>Yeahhh ! &lt;a href="http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&amp;P2_Platform=Linux&amp;P3_Browser_Version=Netscape4"&gt;Flash 7 est disponible sous Linux&lt;/a&gt;&lt;br /&gt;Pour l'installer il faut essentiellement copier les 2 fichiers contenus dans l'archive de Macromedia dans le répertoires des plugins de votre navigateur:&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;tar xfvz install_flash_player_7_linux.tar.gz&lt;br /&gt;cd install_flash_player_7_linux/&lt;br /&gt;cp flashplayer.xpt /usr/lib/mozilla-firefox/plugins/&lt;br /&gt;cp libflashplayer.so /usr/lib/mozilla-firefox/plugins/&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Pour connaitre le répertoire des plugins j'ai fait au préalable :&lt;br /&gt;dpkg -L mozilla-firefox |grep plugins&lt;br /&gt;&lt;br /&gt;Finalement pour tester si tout est okay il faut absolument passer sur &lt;a href="http://www.yetisports.net/"&gt;le site de yeti pour tester online vos aptitudes au lancement de tux&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108979818451950205?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108979818451950205/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108979818451950205' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108979818451950205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108979818451950205'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/des-animations-flash-sous-linux.html' title='Des animations flash sous Linux'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108979740519879152</id><published>2004-07-14T11:23:00.000+02:00</published><updated>2006-10-19T08:35:03.771+02:00</updated><title type='text'>IPTABLES - modifs d'un script firewall de base pour distcc</title><content type='html'>si on veut utiliser la puissance de calcul d'un firewall pour compiler avec distcc on peut modifier comme suit notre petit script :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;br /&gt;DMZ=10.0.0.0/24&lt;br /&gt;IPT='/sbin/iptables'&lt;br /&gt;&lt;br /&gt;$IPT -F&lt;br /&gt;$IPT -F -t nat&lt;br /&gt;&lt;br /&gt;$IPT -P INPUT DROP&lt;br /&gt;&lt;br /&gt;$IPT -P FORWARD DROP&lt;br /&gt;&lt;br /&gt;# accept localhost internal trafic&lt;br /&gt;$IPT -A INPUT -i lo -s localhost -j ACCEPT&lt;br /&gt;&lt;br /&gt;#$IPT -P INPUT ACCEPT&lt;br /&gt;#$IPT -P FORWARD ACCEPT&lt;br /&gt;&lt;br /&gt;# accept ssh from dmz&lt;br /&gt;$IPT -A INPUT -s $DMZ -i eth1 -p tcp --dport 22 -j ACCEPT&lt;br /&gt;&lt;br /&gt;$IPT -A FORWARD -s $DMZ -i eth1 -p udp --dport 53 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -d $DMZ -i eth0 -p udp --sport 53 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -s $DMZ -i eth1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -d $DMZ -i eth0 -p tcp --sport 80 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -s $DMZ -i eth1 -p tcp --dport 9999 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -d $DMZ -i eth0 -p tcp --sport 9999 -j ACCEPT&lt;br /&gt;#allow all trafic for our network to go the internet&lt;br /&gt;$IPT -t nat -A POSTROUTING -s $DMZ -j MASQUERADE&lt;br /&gt;&lt;br /&gt;# on laisse venir de l'intérieur des demandes distcc&lt;br /&gt;$IPT -A INPUT -s $DMZ -i eth1 -p tcp --dport 3632 -j ACCEPT&lt;br /&gt;$IPT -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT&lt;br /&gt;$IPT -A INPUT -i eth0 -p tcp --sport 9999 -j ACCEPT&lt;br /&gt;$IPT -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT&lt;br /&gt;&lt;br /&gt;$IPT -A INPUT -j LOG --log-prefix  "##DROPPED INPUT -- "&lt;br /&gt;$IPT -A FORWARD -j LOG --log-prefix "##DROPPED FORWARD -- "&lt;br /&gt;#show the actual iptables rules&lt;br /&gt;iptables-save&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108979740519879152?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108979740519879152/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108979740519879152' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108979740519879152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108979740519879152'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/iptables-modifs-dun-script-firewall-de.html' title='IPTABLES - modifs d&apos;un script firewall de base pour distcc'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108979695174786191</id><published>2004-07-14T11:14:00.000+02:00</published><updated>2006-10-19T08:35:03.717+02:00</updated><title type='text'>Compilation en parallèle avec distcc</title><content type='html'>Grâce à distcc on peut méchamment augmenter la vitesse de compilation en utilisant des serveurs faisant le travail de compilation pour nous.&lt;br /&gt;On a des infos de configs sur &lt;a href="http://myrddin.org/howto/debian-distcc.php"&gt;debian sur le site de myrddin&lt;/a&gt;.&lt;br /&gt;il faut bien sur installer distcc&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;apt-get install distcc&lt;br /&gt;apt-get install distccmon-gnome&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Il faut veiller à installer la même version du gcc sur toutes les bécannes.&lt;br /&gt;On peut sur le client utiliser des subterfuges pour forcer l'usage de distcc&lt;br /&gt;avec un path bidouillé&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;mkdir -p /usr/local/distcc/bin&lt;br /&gt;cd /usr/local/distcc/bin&lt;br /&gt;ln -s /usr/bin/distcc c++ &lt;br /&gt;ln -s /usr/bin/distcc cc&lt;br /&gt;ln -s /usr/bin/distcc g++&lt;br /&gt;ln -s /usr/bin/distcc gcc&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;et quelques variables d'environnment modifiée dans un .bashrc&lt;br /&gt;&lt;code&gt;&lt;br /&gt;CONCURRENCY_LEVEL=40&lt;br /&gt;DISTCC_HOSTS="localhost tokra sokar alkesh osiris"&lt;br /&gt;PATH="/usr/local/distcc/bin:${PATH}"&lt;br /&gt;export CONCURRENCY_LEVEL DISTCC_HOSTS PATH&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108979695174786191?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108979695174786191/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108979695174786191' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108979695174786191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108979695174786191'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/compilation-en-parallle-avec-distcc.html' title='Compilation en parallèle avec distcc'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108973062280143693</id><published>2004-07-13T16:54:00.000+02:00</published><updated>2006-10-19T08:35:03.663+02:00</updated><title type='text'>IPTABLES - un exemple de script firewall de base</title><content type='html'>ce bout de script iptables, permet de faire un SNAT, et laisse sortir du trafic http (port 80) et dns (53) en sortie vers internet et en entrée&lt;br /&gt;&lt;br /&gt;Les deux dernières règles permettent de voir ce qui ne va pas en allant voir le syslog avec &lt;strong&gt;tail -f /var/log/syslog&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;&lt;br /&gt;DMZ=10.0.0.0/24&lt;br /&gt;IPT='/sbin/iptables'&lt;br /&gt;&lt;br /&gt;$IPT -F&lt;br /&gt;$IPT -F -t nat&lt;br /&gt;&lt;br /&gt;$IPT -P INPUT DROP&lt;br /&gt;&lt;br /&gt;$IPT -P FORWARD DROP&lt;br /&gt;&lt;br /&gt;# accept localhost internal trafic&lt;br /&gt;$IPT -A INPUT -i lo -s localhost -j ACCEPT&lt;br /&gt;&lt;br /&gt;#$IPT -P INPUT ACCEPT&lt;br /&gt;#$IPT -P FORWARD ACCEPT&lt;br /&gt;&lt;br /&gt;# accept ssh from dmz&lt;br /&gt;$IPT -A INPUT -s $DMZ -i eth1 -p tcp --dport 22 -j ACCEPT&lt;br /&gt;&lt;br /&gt;$IPT -A FORWARD -s $DMZ -i eth1 -p udp --dport 53 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -d $DMZ -i eth0 -p udp --sport 53 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -s $DMZ -i eth1 -p tcp --dport 80 -j ACCEPT&lt;br /&gt;$IPT -A FORWARD -d $DMZ -i eth0 -p tcp --sport 80 -j ACCEPT&lt;br /&gt;&lt;br /&gt;#allow all trafic for our network to go the internet&lt;br /&gt;$IPT -t nat -A POSTROUTING -s $DMZ -j MASQUERADE&lt;br /&gt;&lt;br /&gt;$IPT -A INPUT -j LOG --log-prefix  "##DROPPED INPUT -- "&lt;br /&gt;$IPT -A FORWARD -j LOG --log-prefix "##DROPPED FORWARD -- "&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108973062280143693?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108973062280143693/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108973062280143693' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108973062280143693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108973062280143693'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/iptables-un-exemple-de-script-firewall.html' title='IPTABLES - un exemple de script firewall de base'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108972627114140095</id><published>2004-07-13T15:34:00.000+02:00</published><updated>2006-10-19T08:35:03.606+02:00</updated><title type='text'>IPTABLES - On veut laisser sortir les adresses internes sur internet</title><content type='html'>Deux cas de figures, soit on connait notre adr ip publique de façon sure et définitive, par exemple si on a un réseau de type classe C interne 10.0.0.0/24 &lt;br /&gt;et qu'on veut sur la machine qui a deux pates balancer &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;(INTERNAL NETWORK) -----&gt;[FIREWALL LINUX BOX]-------&gt;(THE INTERNET)&lt;br /&gt;___10.0.0.2/24________[10.0.0.1______192.168.7.101]____All Internet IP&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to 192.168.7.101&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;sinon on peut aussi  utiliser du masquerading&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108972627114140095?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108972627114140095/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108972627114140095' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108972627114140095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108972627114140095'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/iptables-on-veut-laisser-sortir-les.html' title='IPTABLES - On veut laisser sortir les adresses internes sur internet'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108970952299454104</id><published>2004-07-13T10:36:00.000+02:00</published><updated>2006-10-19T08:35:03.549+02:00</updated><title type='text'>Créer un lien VPN avec PPP sur SSH</title><content type='html'>En utilisant du ppp à travers du ssh on arrive a relier deux réseaux !&lt;br /&gt;En fait il faut au préalable autoriser le login automatique avec ssh &lt;br /&gt;donc si on a une box1 avec un acces root via ssh sur un box2 ailleurs qui est lui même sur un réseau 10.qqqchose on aura&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Box1_______________________==SSH==&gt;__________________Box2(192.168.7.101)&lt;br /&gt;PPP SERVER____________________________________________PPP CLIENT&lt;br /&gt;10.0.0.1  ____________________________________________  10.0.0.2&lt;br /&gt;root du box1 doit pouvoir ssh sur box2 &lt;br /&gt;sans rentrer mot de passe&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;il faut modifier /etc/ppp/pap-secrets sur serveur&lt;br /&gt;#user host password IP&lt;br /&gt;toto  * "pw123" *&lt;br /&gt;et sur client&lt;br /&gt;#user host password&lt;br /&gt;toto  * pw123&lt;br /&gt;&lt;br /&gt;ensuite on peut ajouter toto dans le fichier &lt;br /&gt;/etc/ppp/options&lt;br /&gt;...&lt;br /&gt;name toto&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;depuis box1 en tant que root on fait un &lt;strong&gt;ssh-keygen -t dsa &lt;/strong&gt; pour générer la clé privées et publique de root sur box1.&lt;br /&gt;On copie cette clé sur la machine destination box2&lt;br /&gt;&lt;strong&gt;scp  /root/.ssh/id_dsa.pub 192.168.7.101:.ssh/authorized_keys&lt;/strong&gt;&lt;br /&gt;ceci va permettre à root de faire du ssh depuis box1 sur box2 sans entrer de mot de passe (ce qui est sympatique vous en conviendrez)&lt;br /&gt;&lt;br /&gt;Ensuite pour créer la liaison ppp depuis box1 on entre :&lt;br /&gt;&lt;strong&gt;pppd updetach noauth passive ipparam vpn 10.0.0.1:10.0.0.2 pty "ssh 192.168.7.101 -lroot -o Batchmode=yes pppd nodetach notty"&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;et voila on a une nouvelle addr ip sur box1 10.0.0.1 sur interface ppp0&lt;br /&gt;et sur box2 10.0.0.2 toujours sur ppp0&lt;br /&gt;on peut pinguer box2 sur cette adr, mais le mieux c'est de créer sur box1 une route du style :&lt;br /&gt;&lt;strong&gt;route add -net 10.0.0.0 netmask 255.255.255.224 gw 192.168.7.101&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108970952299454104?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108970952299454104/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108970952299454104' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108970952299454104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108970952299454104'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/crer-un-lien-vpn-avec-ppp-sur-ssh.html' title='Créer un lien VPN avec PPP sur SSH'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108937805348716997</id><published>2004-07-09T14:07:00.000+02:00</published><updated>2006-10-19T08:35:03.497+02:00</updated><title type='text'>Comment créer un rescue floppy disk</title><content type='html'>Premièrement compiler un noyau minimaliste avec support ramdisk&lt;br /&gt;Petite astuce : on peut modifier le makefile et utiliser un Os au lieu du O2&lt;br /&gt;ceci va indiquer à gcc de compiler en optimisant sur une taille minimale&lt;br /&gt;&lt;br /&gt;Créer un Filesystem on va créer un répertoire rootfs puis on aller dedans:&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;mkdir rootfs&lt;br /&gt;cd rootfs&lt;br /&gt;mkdir dev&lt;br /&gt;mkdir proc&lt;br /&gt;mkdir etc&lt;br /&gt;mkdir sbin&lt;br /&gt;mkdir bin&lt;br /&gt;mkdir lib&lt;br /&gt;mkdir mnt&lt;br /&gt;mkdir usr&lt;br /&gt;cp -dpR /dev/fd[01]* dev&lt;br /&gt;cp -dpR /dev/tty[0-6] dev&lt;br /&gt;cp -dpR /dev/console dev&lt;br /&gt;cp -dpR /dev/kmem dev&lt;br /&gt;cp -dpR /dev/mem dev&lt;br /&gt;cp -dpR /dev/null dev&lt;br /&gt;cp -dpR /dev/ram0 dev&lt;br /&gt;ls -RAl rootfs/&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 15:15 bin&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 12:05 dev&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 15:12 etc&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 10:58 lib&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 10:58 mnt&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 10:58 proc&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 12:47 sbin&lt;br /&gt;drwxr-xr-x    2 root     root         4096 Jul  9 10:58 usr&lt;br /&gt;rootfs/bin:&lt;br /&gt;lrwxr-xr-x    1 root     root            7 Jul  9 15:15 bash -&gt; busybox&lt;br /&gt;-rwxr-xr-x    1 root     root       944856 Jul  9 15:08 busybox&lt;br /&gt;lrwxr-xr-x    1 root     root            7 Jul  9 15:15 sh -&gt; busybox&lt;br /&gt;rootfs/dev:&lt;br /&gt;crw-------    1 root     tty        5,   1 Jul  9 11:55 console&lt;br /&gt;brw-rw----    1 root     floppy     2,   0 Apr 30 02:28 fd0&lt;br /&gt;crw-r-----    1 root     kmem       1,   2 Jul  5 10:53 kmem&lt;br /&gt;crw-r-----    1 root     kmem       1,   1 Jul  5 10:53 mem&lt;br /&gt;crw-rw-rw-    1 root     root       1,   3 Jul  5 10:53 null&lt;br /&gt;brw-rw----    1 root     disk       1,   0 Jul  5 10:53 ram0&lt;br /&gt;crw-------    1 root     root       4,   0 Jul  5 10:53 tty0&lt;br /&gt;crw-------    1 root     root       4,   1 Jul  9 11:55 tty1&lt;br /&gt;crw-------    1 root     root       4,   2 Jul  9 11:55 tty2&lt;br /&gt;crw-------    1 root     root       4,   3 Jul  9 11:55 tty3&lt;br /&gt;crw-------    1 root     root       4,   4 Jul  9 11:55 tty4&lt;br /&gt;crw-------    1 root     root       4,   5 Jul  9 11:55 tty5&lt;br /&gt;crw-------    1 root     root       4,   6 Jul  7 16:04 tty6&lt;br /&gt;rootfs/etc:&lt;br /&gt;-rw-r--r--    1 root     root          133 Jul  9 12:48 fstab&lt;br /&gt;-rw-r--r--    1 root     root          149 Jul  9 12:48 inittab&lt;br /&gt;-rw-r--r--    1 root     root           35 Jul  9 15:12 passwd&lt;br /&gt;-rwxr-xr-x    1 root     root           44 Jul  9 12:12 rc&lt;br /&gt;rootfs/lib: total 0&lt;br /&gt;rootfs/mnt: total 0&lt;br /&gt;rootfs/proc: total 0&lt;br /&gt;rootfs/sbin: total 0&lt;br /&gt;rootfs/usr: total 0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En fait on utilise comme &lt;a href="http://www.busybox.net/"&gt;shell l'excellent busybox&lt;/a&gt; compilé en statique, afin qu'il n'y ait aucune dépendance sur des librairies gourmandes en espace.&lt;br /&gt;On doit personnaliser les fichiers dans /etc et les réduire au  strict minimum :&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cat rootfs/etc/passwd&lt;br /&gt;&lt;em&gt;root:x:0:0:root:/root:/bin/busibox&lt;/em&gt;&lt;br /&gt;cat rootfs/etc/fstab&lt;br /&gt;&lt;em&gt;/dev/ram0       /               ext2    defaults        0       0&lt;br /&gt;/dev/fd0        /               ext2    defaults        0       0&lt;br /&gt;proc            /proc           proc    defaults        0       0&lt;/em&gt;&lt;br /&gt;cat rootfs/etc/inittab&lt;br /&gt;&lt;em&gt;# /etc/inittab: init(8) configuration.&lt;br /&gt;id:2:initdefault:&lt;br /&gt;si::sysinit:/etc/rc&lt;br /&gt;ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now&lt;br /&gt;1:2345:respawn:/bin/sh&lt;/em&gt;&lt;br /&gt;cat rootfs/etc/rc&lt;br /&gt;&lt;em&gt;#!/bin/sh&lt;br /&gt;/bin/mount -av&lt;br /&gt;/bin/hostname box3&lt;/em&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Puis il s'agit de préparer notre filesystem&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;dd if=/dev/zero of=cgramdisk bs=1024 count=2000&lt;br /&gt;mke2fs -m0 -N2000 cgramdisk&lt;br /&gt;mount -o loop cgramdisk /mnt&lt;br /&gt;cp -ar rootfs/* /mnt/&lt;br /&gt;umount /mnt/&lt;br /&gt;gzip -v9 cgramdisk&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ensuite il faut transférer le noyau sur floppy :&lt;br /&gt;&lt;strong&gt;dd if=/usr/src/linux-2.4.26/arch/i386/boot/bzImage  of=/dev/fd0 bs=1k&lt;/strong&gt;&lt;br /&gt;On obtient en retour le nbre de bytes transferés&lt;br /&gt;&lt;em&gt;759+1 records in&lt;br /&gt;759+1 records out&lt;br /&gt;777543 bytes transferred in 50.933104 seconds (15266 bytes/sec)&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;dd if=cgramdisk.gz  of=/dev/fd0 bs=1k seek=765&lt;/strong&gt;&lt;br /&gt;ca va nous donner&lt;br /&gt;&lt;em&gt;&lt;br /&gt;463+1 records in&lt;br /&gt;463+1 records out&lt;br /&gt;474420 bytes transferred in 32.090229 seconds (14784 bytes/sec)&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;2 puissance 14 + 765 = 17149&lt;br /&gt;rdev -r /dev/fd0  17149&lt;br /&gt;rdev /dev/fd0 /dev/fd0&lt;br /&gt;rdev -R /dev/fd0 0&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108937805348716997?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108937805348716997/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108937805348716997' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108937805348716997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108937805348716997'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/comment-crer-un-rescue-floppy-disk.html' title='Comment créer un rescue floppy disk'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108929043290010901</id><published>2004-07-08T14:35:00.000+02:00</published><updated>2007-07-10T10:09:12.897+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Un peu de graphismes avec Perl::Tk !</title><content type='html'>Avec perl on peut afficher des fenêtres avec le module Tk. En fait dans le Linux Magazine de Mai 2004 il y a un &lt;a href="http://www.stonehenge.com/merlyn/LinuxMag/col59.html"&gt;chouette article "Using Perl/Tk for Simple Graphing"&lt;/a&gt; avec un exemple de code perl qui permet de récupérer via un pipe le Uptime d'un serveur distant (avec ssh) et de l'afficher dans une jolie fenêtre tk, on peut récupérer le &lt;a href="http://www.stonehenge.com/merlyn/LinuxMag/col59.listing.txt"&gt;code perl&lt;/a&gt; &lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/perl -w&lt;br /&gt;$ProgramToTrack = $ARGV[0] || "bash";&lt;br /&gt;print "Perl process tracker\n";&lt;br /&gt;print "About to track : $ProgramToTrack\n";&lt;br /&gt;$val = `pidof $ProgramToTrack`;&lt;br /&gt;chomp($val);&lt;br /&gt;#print 'DEBUG - $val =' .  . "\n";&lt;br /&gt;@ListOfPid = split(/ /,$val);&lt;br /&gt;print "Found those entries :\n";&lt;br /&gt;foreach $ThePid  (@ListOfPid){&lt;br /&gt;  $TheStats="";&lt;br /&gt;  open(PSTAT,"/proc/$ThePid/stat");&lt;br /&gt;  while (&lt;PSTAT&gt;) {&lt;br /&gt;  $TheStats .= $_&lt;br /&gt;  }&lt;br /&gt;  chomp($TheStats);&lt;br /&gt;  print "$ThePid : $TheStats\n";&lt;br /&gt;  close(PSTAT);&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108929043290010901?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108929043290010901/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108929043290010901' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108929043290010901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108929043290010901'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/un-peu-de-graphismes-avec-perltk.html' title='Un peu de graphismes avec Perl::Tk !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108927976071038925</id><published>2004-07-08T11:29:00.000+02:00</published><updated>2006-10-19T08:35:03.390+02:00</updated><title type='text'>Que sauvegarder et comment sur Linux</title><content type='html'>Et bien oui, la question est de savoir quoi sauver sur un linux en plus des données, si on désire récupérer une machine rapidos :&lt;br /&gt;1. Sauver vos données (base de données, log etc...)&lt;br /&gt;2. Sauver les applications critiques  (code source, binaire, config appli)&lt;br /&gt;3. Le répertoire /etc&lt;br /&gt;4. La liste des paquetages installés dpkg --get-selections&amp;gt;ListePaquetage.txt&lt;br /&gt;   Ensuite on peut remonter une bécanne avec dpkg --set-selections &amp;lt;ListePaquetage.txt&lt;br /&gt;5. Evt le contenu du répertoire /home&lt;br /&gt;6. Evt /usr/src/Linux*/.config pour récupérer les configs&lt;br /&gt;7. Documenter TOUT les infos de configs partitions, iptables rules etc...&lt;br /&gt;8. Et double triple vérifer ce qu'on oublie&lt;br /&gt;&lt;br /&gt;A la limite il faut essayer de tester la remontée d'une bécanne avec les éléments&lt;br /&gt;On peut backuper avec tar, rsync, unison&lt;br /&gt;&lt;br /&gt;Le tout c'est d'avoir du bon sens et d'essayer d'être exhaustif&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108927976071038925?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108927976071038925/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108927976071038925' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108927976071038925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108927976071038925'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/que-sauvegarder-et-comment-sur-linux.html' title='Que sauvegarder et comment sur Linux'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108921388054378585</id><published>2004-07-07T16:40:00.000+02:00</published><updated>2006-10-19T08:35:03.339+02:00</updated><title type='text'>Un paquetage façon Linux</title><content type='html'>&lt;strong&gt;mkdir test-0.1&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;cd test-0.1&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;vim test.c&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include "test.h"&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;        printf("Test\n");&lt;br /&gt;        return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;strong&gt;vim test.h&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#define TEST&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;strong&gt;vim configure.ac&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;AM_INIT_AUTOMAKE(TEST,1.0)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;strong&gt;vim Makefile.am&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;bin_PROGRAMS=test&lt;br /&gt;test_SOURCES=test.c&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;aclocal&lt;br /&gt;autoscan&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;la il faut utiliser le contenu du configure.scan généré en lieu et place de notre configure.ac&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;mv configure.ac bidon&lt;br /&gt;mv configure.scan configure.ac&lt;br /&gt;cat bidon &gt;&gt; configure.ac&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;vim configure.ac pour remettre tout au bon endroit &lt;br /&gt;&lt;code&gt;&lt;br /&gt;#                                               -*- Autoconf -*-&lt;br /&gt;# Process this file with autoconf to produce a configure script.&lt;br /&gt;&lt;br /&gt;AC_PREREQ(2.59)&lt;br /&gt;AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)&lt;br /&gt;AC_CONFIG_SRCDIR([test.c])&lt;br /&gt;AC_CONFIG_HEADER([config.h])&lt;br /&gt;AM_INIT_AUTOMAKE(TEST,1.0)&lt;br /&gt;&lt;br /&gt;# Checks for programs.&lt;br /&gt;AC_PROG_CC&lt;br /&gt;&lt;br /&gt;# Checks for libraries.&lt;br /&gt;&lt;br /&gt;# Checks for header files.&lt;br /&gt;&lt;br /&gt;# Checks for typedefs, structures, and compiler characteristics.&lt;br /&gt;&lt;br /&gt;# Checks for library functions.&lt;br /&gt;&lt;br /&gt;AC_CONFIG_FILES([Makefile])&lt;br /&gt;AC_OUTPUT&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;autoconf&lt;br /&gt;touch ./README ./AUTHORS ./ChangeLog ./NEWS&lt;br /&gt;autoheader&lt;br /&gt;automake -a&lt;br /&gt;apt-get install debmake&lt;br /&gt;apt-get install devscripts&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;ici on rajoute essentiellement les paquetages pour deb-make et debuild&lt;br /&gt;Ensuite on peut lancer la construction du paquetage&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;deb-make&lt;br /&gt;debuild -uc -us&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Et voilà ! si tout est okay on a un beau "cgtest_0.1-1_i386.deb"&lt;br /&gt;dans le répertoire parent et on peut tester son install avec&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;dpkg -i test_0.1-1_i386.deb&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Et maintenant on a installé le paquetage &lt;br /&gt;&lt;strong&gt;whereis cgtest&lt;/strong&gt; donnera un &lt;em&gt;cgtest: /usr/bin/cgtest&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;apt-cache show test&lt;/strong&gt;&lt;br /&gt;donne le même résultat qu'un&lt;br /&gt;&lt;strong&gt;more test-0.1/debian/control&lt;/strong&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108921388054378585?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108921388054378585/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108921388054378585' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108921388054378585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108921388054378585'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/un-paquetage-faon-linux.html' title='Un paquetage façon Linux'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108918826104896370</id><published>2004-07-07T10:00:00.000+02:00</published><updated>2006-10-19T08:35:03.288+02:00</updated><title type='text'>Du RAID Logiciel avec Linux</title><content type='html'>On va s'entrainer au Raid logiciel sans avoir plusieurs disques...&lt;br /&gt;On crée tout d'abord trois fichiers sur un disque (ou idéalement sur trois disques)&lt;br /&gt;Il faut compiler le noyau avec le support pour le RAID&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;dd if=/dev/zero of=MyDisk0 bs=1024 count=20000&lt;br /&gt;dd if=/dev/zero of=MyDisk1 bs=1024 count=20000&lt;br /&gt;dd if=/dev/zero of=MyDiskSpare bs=1024 count=20000&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Puis on en fait les associe à des loop devices&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;losetup /dev/loop0 MyDisk0&lt;br /&gt;losetup /dev/loop1 MyDisk1&lt;br /&gt;losetup /dev/loop2 MyDiskSpare&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;On peut vérifier que c'est okay avec un "echo hello &gt; /dev/loop0" suivit d'un cat /dev/loop0&lt;br /&gt;Ensuite il faut installer les raidtools2 et créer un fichier /etc/raidtab&lt;br /&gt;dans lequel on précise ce que l'on veut faire au niveau du Raid, par exemple un petit Raid1 avec un disque de spare...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;box3:/home/cgil/test# cat /etc/raidtab &lt;br /&gt;raiddev /dev/md0&lt;br /&gt;raid-level      1&lt;br /&gt;nr-raid-disks   2&lt;br /&gt;nr-spare-disks  1&lt;br /&gt;chunk-size      4&lt;br /&gt;persistent-superblock   1&lt;br /&gt;device  /dev/loop0&lt;br /&gt;raid-disk       0&lt;br /&gt;device  /dev/loop1&lt;br /&gt;raid-disk       1&lt;br /&gt;device  /dev/loop2&lt;br /&gt;spare-disk      0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Finalement on peut créer notre device Raid&lt;br /&gt;&lt;strong&gt;mkraid /dev/md0&lt;/strong&gt;&lt;br /&gt;Avec un &lt;strong&gt;cat /proc/mdstat&lt;/strong&gt; on vérifie que tout est okay&lt;br /&gt;Reste plus qu'a y mettre un chtit système de fichier&lt;br /&gt;&lt;strong&gt;mke2fs -j /dev/md0&lt;/strong&gt;&lt;br /&gt;Et Allez  on peut monter le bazard a chausette une fois  !&lt;br /&gt;&lt;strong&gt;mount /dev/md0 /mnt/&lt;/strong&gt;&lt;br /&gt;et aller faire mumuse dedans un bô disque en raid1 !&lt;br /&gt;bon c'est du raid logiciel bidouillé pour pas cher,&lt;br /&gt;personellement je continue à croire que pour un box en prod ça vaut vraiment la peine de mettre quelques sous en plus pour avoir une carte RAID qui fait ça bien comme il faut et rapidos.&lt;br /&gt;Mais bon c'est bien de savoir qu'on peut le faire et comment, après à voir si on utilise de cas en cas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108918826104896370?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108918826104896370/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108918826104896370' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108918826104896370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108918826104896370'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/du-raid-logiciel-avec-linux.html' title='Du RAID Logiciel avec Linux'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108912250539308815</id><published>2004-07-06T15:44:00.000+02:00</published><updated>2006-10-19T08:35:03.231+02:00</updated><title type='text'>Un système de fichier dans un fichier...</title><content type='html'>On veut parfois créer un fichier qui contiendrait tout un système de fichiers.&lt;br /&gt;on peut donc commencer par créer un fichier d'environ 5 mb remplit avec des zéros :&lt;br /&gt;&lt;strong&gt;dd if=/dev/zero of=myfile bs=1024 count=5000&lt;/strong&gt;&lt;br /&gt;Puis après un "su" on peut en tant que root&lt;br /&gt;&lt;strong&gt;mke2fs -j myfile&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;e2fsck myfile &lt;/strong&gt;&lt;br /&gt;Ensuite on peut "mounter" le disque dans un répertoire&lt;br /&gt;&lt;strong&gt;mkdir /mnt/MonDiskAMoi&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;mount -o loop myfile /mnt/MonDiskAMoi&lt;/strong&gt;&lt;br /&gt;Et on peut aller dedans écrire et tout et tout&lt;br /&gt;On peut même monter ce truc automatiquement avec fstab&lt;br /&gt;autofs ne fonctionne a priori pas ici, mais ça c'est une autre histoire...&lt;br /&gt;Et en plus il faut pour autofs que le noyau soit compiler avec CONFIG_AUTOFS4_FS=y&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108912250539308815?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108912250539308815/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108912250539308815' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108912250539308815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108912250539308815'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/un-systme-de-fichier-dans-un-fichier.html' title='Un système de fichier dans un fichier...'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108911650012698097</id><published>2004-07-06T14:17:00.000+02:00</published><updated>2006-10-19T08:35:03.177+02:00</updated><title type='text'>Des Licences à la pelle !</title><content type='html'>Il devient cauchemardesque de s'y retrouver dans le monde des licences&lt;br /&gt;aussi voici quelques sites bien utiles&lt;br /&gt;Un site pour la génération des licences en dynamique &lt;a href="http://creativecommons.org"&gt;http://creativecommons.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108911650012698097?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108911650012698097/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108911650012698097' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108911650012698097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108911650012698097'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/des-licences-la-pelle.html' title='Des Licences à la pelle !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108910581772888390</id><published>2004-07-06T11:12:00.000+02:00</published><updated>2006-10-19T08:35:03.122+02:00</updated><title type='text'>Linux dans Linux dans Linux... (UserMode Linux)</title><content type='html'>Hiiijaaaa !&lt;br /&gt;Aujourd'hui on va s'amuser un peu avec un linux qui tourne dans un linux qui tourne dans ...&lt;br /&gt;Bien souvent, on  peut se retrouver dans ls situation ou on aimerait expérimenter quelquechose sur un box Linux sans pénaliser les autres aplications (quelquechose d'un peu plus fort qu'un simple ulimit), simuler un réseau etc... Et en fait pour faire cela on va utiliser le  &lt;a href="http://user-mode-linux.sourceforge.net/dl-sf.html"&gt;User Mode Linux&lt;/a&gt;&lt;br /&gt;Voila encore un super projet qui va nous permettre de lancer un linux pour y faire des "expériences" dignes de Billkenstein...&lt;br /&gt;On recopie /usr/src/linux-2.4.26 dans notre home directory,&lt;br /&gt;on va dedans et on fait un peu le ménage avev un &lt;strong&gt;make mrproprer&lt;/strong&gt;&lt;br /&gt;on récupére le patch uml pour la 2.4.26 &lt;a href="http://prdownloads.sourceforge.net/user-mode-linux/uml-patch-2.4.26-1.bz2"&gt;uml-patch-2.4.26-1.bz2&lt;/a&gt;&lt;br /&gt;Bon maintenant il faut patcher le source dans /home/cgil/linux-2.4.26 avec un chtit :&lt;br /&gt;&lt;strong&gt;bzip2 -dc uml-patch-3.4.26-1.bz2 | patch -p1&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;make xconfig ARCH=um&lt;/strong&gt;&lt;br /&gt;Bon il y a des infos bien plus détaillées sur le &lt;a href="http://user-mode-linux.sourceforge.net/compile.html"&gt;site UML&lt;/a&gt; alors je vais pas m'étendre la-dessus.&lt;br /&gt;A priori dans un premier temps vous pouvez laisser les options en standard et lancer la compilation :&lt;br /&gt;&lt;strong&gt;make linux ARCH=um&lt;/strong&gt;&lt;br /&gt;ceci va créer un éxécutable du nom de "linux" et puis avec un chtit "strip linux" on lui donne une taille un peu plus raisonnable&lt;br /&gt;Maintenant pour lancer notre nouveau Linux il faut un système de fichier,&lt;br /&gt;&lt;a href="http://user-mode-linux.sourceforge.net/fs_making.html"&gt;On peut creer son propre filesystem&lt;/a&gt; &lt;br /&gt;je vais utiliser une &lt;a href="http://prdownloads.sourceforge.net/user-mode-linux/Debian-3.0r0.ext2.bz2"&gt;debian3.0&lt;/a&gt; dans une debian. Il s'agit en fait d'un "root filesystem" déjà prêt que vous pouvez récupérez et copier dans le répertoire ou vous avez compiler UML. Pour lancer tout cela, on peut soit créer un lien symbolique du nom de root_fs avec un :&lt;br /&gt;&lt;strong&gt;ln -s /home/cgil/linux-2.4.26/Debian-3.0r0.ext2 root_fs&lt;/strong&gt;&lt;br /&gt;et lancer &lt;strong&gt;./linux&lt;/strong&gt; qui va lire par défaut le fichier root_fs du répertoire courant&lt;br /&gt;soit on lance le programme en précisant le fichier "root_filesystem" à utiliser avec :&lt;br /&gt;&lt;strong&gt;./linux ubd0=Debian-3.0r0.ext2&lt;/strong&gt;&lt;br /&gt;Et voila on est dans un Linux qui est bridé et quand on est dedans il est quasiment impossible de savoir que l'on est juste "dans la matrice" ! Ou est l'éxtérieur, qu'est ce qui est vrai et réel ?! qui peut le dire... Et oui avec Linux c'est de la philosophie tout les jours,&lt;br /&gt; n'hésite pas Man choisit la bonne main,&lt;br /&gt;celle ou il y a Tux pingouin !&lt;br /&gt;Un example plus complexe &lt;br /&gt;&lt;strong&gt;./linux mem=64M ubd0=root_fs.rh-7.2-full.cow,root_fs.rh-7.2-full.pristine.20020312 ubd1=swap eth0=ethertap,tap2,C0:FF:EE:C0:FF:EE,192.168.0.254&lt;/strong&gt;&lt;br /&gt;La liste de tous &lt;a href="http://user-mode-linux.sourceforge.net/switches.html"&gt;les switchs se trouve sur le site&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108910581772888390?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108910581772888390/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108910581772888390' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108910581772888390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108910581772888390'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/linux-dans-linux-dans-linux-usermode.html' title='Linux dans Linux dans Linux... (UserMode Linux)'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108903872166159420</id><published>2004-07-05T16:43:00.000+02:00</published><updated>2006-10-19T08:35:03.069+02:00</updated><title type='text'>PatchWork de noyau</title><content type='html'>Diantre, j'ai configuré et compilé un noyau, et j'arrive a rebooter .&lt;br /&gt;C'est plus magique que "Charmed" !&lt;br /&gt;bon ben maintenant s'agit de patcher le noyau 2.4.25 en 2.4.26&lt;br /&gt;il faut downloader le patch et le copier dans /usr/src/linux-2.4.25&lt;br /&gt;&lt;strong&gt;bzip2 -dc patch-2.4.26.bz2 |patch -p1&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108903872166159420?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108903872166159420/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108903872166159420' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108903872166159420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108903872166159420'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/patchwork-de-noyau.html' title='PatchWork de noyau'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108902072950560276</id><published>2004-07-05T11:35:00.000+02:00</published><updated>2006-10-19T08:35:02.961+02:00</updated><title type='text'>Y viva la compilation del noyau !</title><content type='html'>Et voilà, c'est parti pour une semaine de cours Linux LPI201 !&lt;br /&gt;On commence avec une install d'une &lt;a href="http://www.debian.org"&gt;debian&lt;/a&gt;.&lt;br /&gt;Intéressant, je n'avais jamais trop pratiqué cette distribution.&lt;br /&gt;Il n'y a rien de bien spécial à dire sur l'installation, si ce n'est que le minimal est vraiment minimal... &lt;br /&gt;Pour les paquetages debian on utilise essentiellement :&lt;br /&gt;&lt;strong&gt;apt-cache search nomdepaquetage&lt;/strong&gt; pour avoir une liste des paquetages dispo&lt;br /&gt;&lt;strong&gt;apt-get install nomdepaquetage&lt;/strong&gt; pour installer le paquetage de vos rêves !&lt;br /&gt;&lt;em&gt;Notez que pour éxecuter "apt-get" il faut être root (un chtit su)&lt;/em&gt;&lt;br /&gt;On s'attaque à une compilation de noyau, on récupère le source d'une 2.4.25 &lt;br /&gt;on copie le tout dans /usr/src&lt;br /&gt;on installe 2-3 trucs manquants tel que les librairies ncurses et bzip2:&lt;br /&gt;apt-get install libncurses5-dev&lt;br /&gt;apt-get install bzip2&lt;br /&gt;et c'est parti pour un &lt;strong&gt;tar jxvf linux-2.4.25.tar.bz2&lt;/strong&gt;&lt;br /&gt;Ceci va désarchiver les sources de votre noyau dans le répertoire /usr/src/linux-2.4.25&lt;br /&gt;Okay et maintenant on rentre dans la cour des grands...&lt;br /&gt;On va attaquer la configuration du noyau après un "cd linux-2.4.25"&lt;br /&gt;on peut utiliser plusieurs variantes :&lt;br /&gt;&lt;strong&gt;make menuconfig&lt;/strong&gt; menu de config en mode texte (avec librairie ncurses)&lt;br /&gt;&lt;strong&gt;make xconfig&lt;/strong&gt; menu de config graphique sous X&lt;br /&gt;&lt;em&gt;Okay le plus dur c'est de choisir les bonnes options, c'est même tout un art, mais bon Rome ne c'est pas faite en 1 jour, et puis le but d'un cours c'est d'essayer...&lt;/em&gt;&lt;br /&gt;Personnellement j'utilisais beaucoup menuconfig, mais il semble qu'effectivement il y a plus d'analyses des dépendances en utilisant make config. J'essayerais de faire une liste à l'occasion de ce qu'il ne faut pas oublier.&lt;br /&gt;&lt;strong&gt;make dep&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;make bzImage&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;make modules&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;su&lt;/strong&gt;&lt;em&gt;il faut être root pour installer !&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;make install&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;make modules_install&lt;/strong&gt;&lt;br /&gt;Ensuite il ne faut pas oublier d'éditer /boot/grup/menu.lst pour y ajouter notre nouveau kernel fraichement compilé, on peut copier une entrée existante pour créer un troisième menu (en dessous du recovery)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;title		CGIl GNU/Linux, kernel 2.4.25-1-386 &lt;br /&gt;root		(hd0,1)&lt;br /&gt;kernel		/boot/vmlinuz-2.4.25 root=/dev/hda2 ro &lt;br /&gt;savedefault&lt;br /&gt;boot&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108902072950560276?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108902072950560276/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108902072950560276' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108902072950560276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108902072950560276'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/y-viva-la-compilation-del-noyau.html' title='Y viva la compilation del noyau !'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108877596156848452</id><published>2004-07-02T15:35:00.000+02:00</published><updated>2007-07-10T10:12:56.867+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rpm'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Quels RPMs  surmon bô serveur</title><content type='html'>Et voici un petits shells scripts tout con, que j'ai écrit parceque je voulais savoir rapidement ce qui se trouvait sur mon serveur, il permet de savoir les RPM qui sont déjà installés, mais surtout de lire leurs description sans devoir se casser la tête. On peut sauver le fichier sous un nom évoquateur tel que listerpm.sh et ensuite on peut l'appeller soit tel quel sans arguments et alors il donnera l'intégrale des rpm présents sur le serveur, soit on lui passe un argument du style &lt;em&gt;"./listerpm.sh open"&lt;/em&gt; et dans ce cas il ne listera que les paquetages rpm contenant dans leurs nom "open" en majuscules ou en minuscules (switch -i du grep)...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;if [ -z "$1" ]; then&lt;br /&gt; rpm -qa |sort |perl -ne 'print qx(rpm -qi $_).qq(\n).q(*)x80 . qq(\n);'| more&lt;br /&gt; else&lt;br /&gt; rpm -qa |grep -i $1 |sort |perl -ne 'print qx(rpm -qi $_).qq(\n).q(*)x80 . qq(\n);'| more&lt;br /&gt;fi&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;En éspérant que cela soit utile, et/ou que cela vous inspire pour un autre usage !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108877596156848452?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108877596156848452/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108877596156848452' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108877596156848452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108877596156848452'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/quels-rpms-surmon-b-serveur.html' title='Quels RPMs  surmon bô serveur'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108877521600774008</id><published>2004-07-02T14:58:00.000+02:00</published><updated>2007-07-10T10:09:12.897+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl "OneLiner"</title><content type='html'>Perl a ceci de merveilleux qu'il peut être utilisé comme un formidable outil d'expérimentation. &lt;br /&gt;Avec un simple switch "-e"  on peut partir à l'aventure : &lt;br /&gt;&lt;strong&gt;perl -e "print qq(Coucou le hibou)"&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Coucou le hibou&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Ainsi voici un chtit Search &amp; Replace bien pratique sur le contenu d'un fichier:&lt;br /&gt;&lt;strong&gt;perl -pe 's/oldstring_re/newstring/gi ' MyFile.txt &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On verse dans le délire intégral ? Ok alors on a un fichier log d'un serveur web, qqch  du style :&lt;br /&gt;2003-02-06 06:34:41 10.18.15.9 SUISSE_VS\assa0018 W3SVC3 10.180.7.40 80 GET /goeland/parc/xml/CityWithParcelle.xml - 304 0 141 602 15 &lt;br /&gt;2003-02-06 06:34:41 10.13.21.4 SUISSE_VS\cmrs0062 W3SVC3 10.180.7.40 80 GET /goeland/parc/xsl/CGComboCityWithParcelle.xsl - 304 0 141 368 0 &lt;br /&gt;2003-02-06 06:34:43 10.18.15.42 SUISSE_VS\rsta0015 W3SVC3 10.180.7.40 80 POST /goeland/parc/xml/CNGetDataParcelle.asp - 200 0 89 739 922 &lt;br /&gt;2003-02-06 06:34:43 10.12.2.49 SUISSE_VS\rsta0015 W3SVC3 10.180.7.40 80 GET /groeland/parcelle/xsl/CNDataParcelle.xsl - 304 0 140 358 0 &lt;br /&gt;En quatrième position et séparé par des espaces on a un nom de login, on veut obtenir une liste ordonnée de ces logins avec leur nombre de hits, soit le nombre de fois que l'on a trouvé des lignes dans le fichier log pour cet utilisateur. Et bien en une ligne avec du Perl ça donne :&lt;br /&gt;&lt;strong&gt;perl -ne "if (m/^[^# ]([^ ]+)\s([^ ]+)\s([^ ]+)\s([^ ]+)/gi) { $tmp=qq(\U$4); %MyHash =(%MyHash,$tmp, $MyHash{ $tmp }+1); } END{foreach $key (sort keys %MyHash) {print qq($key =&gt; $MyHash{$key}\n);}}" ./ex030208.log&lt;/strong&gt;&lt;br /&gt;Et on obtient quelquechose du style :&lt;br /&gt;&lt;em&gt;SUISSE_VS\assa6018 =&gt; 32&lt;br /&gt;SUISSE_VS\cmrs0062 =&gt; 160&lt;br /&gt;etc...&lt;/em&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108877521600774008?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108877521600774008/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108877521600774008' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108877521600774008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108877521600774008'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/perl-oneliner.html' title='Perl &quot;OneLiner&quot;'/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7513164.post-108877127710414431</id><published>2004-07-02T13:49:00.000+02:00</published><updated>2006-10-19T08:35:02.737+02:00</updated><title type='text'>Les certifications LPI pour Linux </title><content type='html'>La semaine prochaine je vais suivre le cours &lt;a href="http://www.lynuxtraining.com/fr/formations/certification-LPI201.html"&gt;LPI201 &lt;/a&gt;à  &lt;a href="http://www.lynuxtraining.com/"&gt;LinuxTraining&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.lpi.org/en/lpic.html"&gt;Le programme de certification LPI est un programme complet &lt;/a&gt;conçu pour affirmer les compétences en administration système sous Linux.&lt;br /&gt;Il y a beaucoup de documentation Linux sur Internet, mais il est parfois difficile de savoir par ou commencer.&lt;br /&gt;Avec le programme LPI on obtient une sorte de fil rouge qui guide le néophite du plus simple au plus compliqué dans l'art subtil de la gestion et de l'administration sous Linux.&lt;br /&gt;Il est intéressant de signaler que D.Robbins le président de &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt; (cette superbe distribution Linux basée sur du code source) a commencé à  écrire une série de cours d'introduction tous intégralements disponibles sur le &lt;a href="http://www-106.ibm.com/developerworks/edu/l-dw-linux-lpir21-i.html?S_TACT=104AHW19&amp;S_CMP=EDU" title="Cliquez pour aller consulter le premier cours sur LPI certification 101 (release 2) exam prep, Part 1: Linux fundamentals"&gt;site developerworks de IBM&lt;/a&gt;. C'est en anglais, mais ça vaut sont pesant de chips...&lt;br /&gt;Sur &lt;a href="http://www.linux-france.org/article/"&gt;Linux France&lt;/a&gt; il y a des documents en français. &lt;br /&gt;Et puis il y a l'incontournable &lt;a href="http://tldp.org/index.html"&gt;TLDP The Linux Documentation Project&lt;/a&gt; regroupant des manuels des HOWTOs etc... Personnellement, j'utilise le &lt;a href="http://sunsite.cnlab-switch.ch/LDP/"&gt;miroir Suisse chez Switch &lt;/a&gt;car c'est plus rapide, et après tout un miroir c'est fait pour être utilisé !&lt;br /&gt;Sur &lt;a href="http://www.linux.org/docs/online_books.html"&gt;Linux Online&lt;/a&gt; on trouve une liste de bouquins disponibles en ligne gratuitement.&lt;br /&gt;Finalement j'apprécie la qualité des articles concernant &lt;a href="http://www-106.ibm.com/developerworks/views/linux/tutorials.jsp"&gt;Linux disponibles sur le site developerWorks d'IBM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7513164-108877127710414431?l=lapt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lapt.blogspot.com/feeds/108877127710414431/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7513164&amp;postID=108877127710414431' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108877127710414431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7513164/posts/default/108877127710414431'/><link rel='alternate' type='text/html' href='http://lapt.blogspot.com/2004/07/les-certifications-lpi-pour-linux.html' title='Les certifications LPI pour Linux '/><author><name>Lao Tseu</name><uri>http://www.blogger.com/profile/04932472920231254589</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='23' src='http://bp0.blogger.com/_iMeJmHinc5w/SDZ4c9mxMxI/AAAAAAAAAIU/25fino1oFgY/S220/riviere.jpg'/></author><thr:total>0</thr:total></entry></feed>
