<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.bonz.org/tech/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>ZenTech - debian</title>
  <link>http://www.bonz.org/tech/</link>
  <description>Om Mani Padme Hum</description>
  <language>fr</language>
  <pubDate>Mon, 10 Nov 2008 00:41:06 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Salut le petit soldat en plastique</title>
    <link>http://www.bonz.org/tech/post/2008/11/03/Salut-le-petit-soldat-en-plastique</link>
    <guid isPermaLink="false">urn:md5:fe7c9c9b3e099e1072e6d5f88dc89f5e</guid>
    <pubDate>Mon, 03 Nov 2008 12:45:00 +0100</pubDate>
    <dc:creator>hr</dc:creator>
        <category>actualité</category>
        <category>3.1</category><category>archive</category><category>debian</category><category>eol</category><category>sarge</category>    
    <description>    &lt;p&gt;On dit au revoir à la &lt;a href=&quot;http://www.debian.org/releases/sarge/&quot; hreflang=&quot;en&quot;&gt;sarge&lt;/a&gt; qui est passée la semaine dernière en archive.&lt;br /&gt;
Pour trouver les paquets de sarge, il faut donc maintenant se tourner vers&amp;nbsp;: &lt;code&gt;{http,ftp}://archive.debian.org/&lt;/code&gt;. Le miroir oleane a également été mis à jour, l'accès se fait par&amp;nbsp;: &lt;code&gt;{http|ftp}://ftp2.fr.debian.org/pub/debian-archive/&lt;/code&gt;.&lt;br /&gt;
Il ne reste donc plus que &lt;a href=&quot;http://www.debian.org/releases/etch/&quot; hreflang=&quot;en&quot;&gt;etch&lt;/a&gt; en stable, en attendant &lt;a href=&quot;http://www.debian.org/releases/lenny/&quot; hreflang=&quot;en&quot;&gt;lenny&lt;/a&gt; qui devrait &lt;a href=&quot;http://release.debian.org/lenny/arch_qualify.html&quot; hreflang=&quot;en&quot;&gt;bientôt&lt;/a&gt; passer de &lt;a href=&quot;http://release.debian.org/&quot; hreflang=&quot;en&quot;&gt;testing en stable&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.bonz.org/tech/post/2008/11/03/Salut-le-petit-soldat-en-plastique#comment-form</comments>
      <wfw:comment>http://www.bonz.org/tech/post/2008/11/03/Salut-le-petit-soldat-en-plastique#comment-form</wfw:comment>
      <wfw:commentRss>http://www.bonz.org/tech/feed/rss2/comments/327</wfw:commentRss>
      </item>
    
  <item>
    <title>Vient du latin subvertere</title>
    <link>http://www.bonz.org/tech/post/2008/10/22/Vient-du-latin-subvertere</link>
    <guid isPermaLink="false">urn:md5:fe3fc512d4ff50291ab60df7ff895128</guid>
    <pubDate>Wed, 22 Oct 2008 17:28:00 +0200</pubDate>
    <dc:creator>hr</dc:creator>
        <category>système</category>
        <category>debian</category><category>etch</category><category>subversion</category><category>svn</category>    
    <description>&lt;p&gt;Lorsqu'on souhaite fournir un projet à la communauté, on doit se poser la question du &lt;a href=&quot;http://fr.wikipedia.org/wiki/VCS&quot; hreflang=&quot;fr&quot;&gt;gestionnaire de version&lt;/a&gt;. Il me semble indispensable d'utiliser un tel outil si d'autres personnes viennent à participer au projet. Je vous présente ici une solution rapide de serveur &lt;a href=&quot;http://subversion.tigris.org/&quot; hreflang=&quot;en&quot;&gt;subversion&lt;/a&gt; avec accès &lt;code&gt;svnserve&lt;/code&gt; sur une debian. Oui, ce post n'est pas drôle, on ne rigole pas avec les VCS, merde&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;Il faut bien évidemment commencer par installer les outils nécessaire à l'utilisation de subversion.&lt;/p&gt;
&lt;pre&gt;
# apt-get install subversion
&lt;/pre&gt;


&lt;p&gt;J'ai choisis de créer un utilisateur système dédié aux opérations svn. Cet utilisateur est très subtilement appelé '&lt;code&gt;svn&lt;/code&gt;' et la racine des données subversion se trouve dans &lt;code&gt;/var/lib/svn&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
# addgroup --system svn
# adduser --system --disabled-login --ingroup svn --no-create-home --home /var/lib/svn --gecos &amp;quot;subversion&amp;quot; --shell /bin/false svn
# mkdir /var/lib/svn
# chown svn:svn /var/lib/svn
# chmod 755 /var/lib/svn
&lt;/pre&gt;


&lt;p&gt;Le serveur d'accès est &lt;code&gt;svnserve&lt;/code&gt;. Attention, c'est le choix le plus simple à mettre en place mais il souffre de sérieux &lt;a href=&quot;http://svnbook.red-bean.com/en/1.5/svn.serverconfig.choosing.html&quot; hreflang=&quot;en&quot;&gt;handicaps&lt;/a&gt; par rapport aux alternatives. Je préfère limiter l'accès du serveur svn à un répertoire donné pour éviter d'éventuelles fuites.&lt;/p&gt;
&lt;pre&gt;
$ grep svn /etc/services 
svn             3690/tcp        subversion      # Subversion protocol
svn             3690/udp        subversion
$ grep svn /etc/inetd.conf 
svn stream tcp nowait svn /usr/bin/svnserve svnserve -i -r /var/lib/svn
# /etc/init.d/openbsd-inetd restart
&lt;/pre&gt;


&lt;p&gt;Maintenant que nous avons un serveur d'accès, il faut créer des données, c'est un peu le jeu ma pauv' Lucette. Un dépot pour un projet fictif appelé 'project' est un début.&lt;/p&gt;
&lt;pre&gt;
# svnadmin create /var/lib/svn/project
# chown -R svn:svn /var/lib/svn/project
&lt;/pre&gt;


&lt;p&gt;Dans le cas d'un dépôt ayant besoin d'un accès authentifié, il y a deux fichiers à modifier :&lt;br /&gt;
&lt;code&gt;/var/lib/svn/project/conf/conf/svnserve.conf&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[general] 
password-db = passwd
realm = project
&lt;/pre&gt;


&lt;p&gt;&lt;code&gt;/var/lib/svn/project/conf/conf/passwd&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[users]
user = password
&lt;/pre&gt;


&lt;p&gt;L'environnement est maintenant complètement disponible, on peut essayer de récupérer les sources du projet (vide) et y créer puis publier un fichier.&lt;/p&gt;
&lt;pre&gt;
$ svn co svn://localhost/project
$ cd project
$ touch foo
$ svn add foo
$ svn ci -m 'test' foo
$ svn list
foo
&lt;/pre&gt;

&lt;p&gt;Si tout se passe bien c'est gagné, sinon, il est utile de se pencher sur l'excellent &lt;a href=&quot;http://svnbook.red-bean.com/&quot; hreflang=&quot;en&quot;&gt;livre O'Reilly&lt;/a&gt; traitant du sujet.&lt;/p&gt;


&lt;p&gt;Attention, votre configuration svn est minimale et conviendra pour un petit serveur personnel. Dans le cas d'un projet plus important de gestion de code il faudra probablement se tourner vers un accès webdav grâce à apache (lighttpd ne le supporte pas encore !!) et un système d'authentification plus performant.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.bonz.org/tech/post/2008/10/22/Vient-du-latin-subvertere#comment-form</comments>
      <wfw:comment>http://www.bonz.org/tech/post/2008/10/22/Vient-du-latin-subvertere#comment-form</wfw:comment>
      <wfw:commentRss>http://www.bonz.org/tech/feed/rss2/comments/315</wfw:commentRss>
      </item>
    
  <item>
    <title>Bruce Schneier knows Alice and Bob's shared secret</title>
    <link>http://www.bonz.org/tech/post/2008/08/07/Bruce-Schneier-knows-Alice-and-Bobs-shared-secret</link>
    <guid isPermaLink="false">urn:md5:1813916f63cbeef74f99a2083c01cb43</guid>
    <pubDate>Mon, 13 Oct 2008 14:50:00 +0200</pubDate>
    <dc:creator>hr</dc:creator>
        <category>système</category>
        <category>cryptsetup</category><category>debian</category><category>dedibox</category><category>dedimeule</category><category>dm-crypt</category><category>etch</category><category>linux</category><category>luks</category><category>v2.6</category><category>x86_64</category>    
    <description>&lt;p&gt;Comment faire lorsqu'on souhaite se constituer un petit espace très personnel sur une machine linux. Que faire quand on souhaite que cet espace soit conservé à l'abris des yeux indiscrets. Je vous propose une petite recette simple et efficace. Il suffit d'utiliser des ingrédients que vous trouverez dans votre cuisine !!&lt;/p&gt;    &lt;p&gt;L'environnement système est une debian etch installée en 64bits sur une dedibox. Je vais utiliser le chiffrement de bloc avec &lt;code&gt;&lt;a href=&quot;http://luks.endorphin.org/&quot; hreflang=&quot;en&quot;&gt;LUKS&lt;/a&gt;&lt;/code&gt; utilisant &lt;code&gt;&lt;a href=&quot;http://www.saout.de/misc/dm-crypt/&quot; hreflang=&quot;en&quot;&gt;dm-crypt&lt;/a&gt;&lt;/code&gt;. Nous ne chiffrerons pas la partition racine du système mais bien une partition de données.&lt;/p&gt;


&lt;p&gt;Il faut tout d'abord vérifier qu'on a les outils nécessaires au &lt;a href=&quot;http://fr.wikipedia.org/wiki/M%C3%A9thode_de_chiffrement#.C2.AB_Cryptage_.C2.BB_.3F&quot; hreflang=&quot;fr&quot;&gt;chiffrement&lt;/a&gt; de partition.&lt;/p&gt;
&lt;pre&gt;
# apt-get install cryptsetup dmsetup hashalot
[...]
&lt;/pre&gt;


&lt;p&gt;Maintenant que les outils de base sont installés, on vérifie leur compatibilité avec l'utilisation qu'on souhaite en faire.&lt;/p&gt;
&lt;pre&gt;
# cryptsetup --help
cryptsetup-luks 1.0.5
[...]
# dmsetup targets
zero             v1.0.0
mirror           v1.0.20
snapshot-origin  v1.6.0
snapshot         v1.6.0
crypt            v1.5.0
striped          v1.1.0
linear           v1.0.2
error            v1.0.1

# cat /proc/crypto | grep name
name         : aes
name         : sha256
name         : sha224
name         : sha1
name         : md5
&lt;/pre&gt;

&lt;p&gt;la commande &lt;code&gt;cryptsetup&lt;/code&gt; installée supporte bien LUKS et le noyau est capable de supporter le chiffrement.&lt;/p&gt;


&lt;p&gt;Pour les architectures supportant le 64bit.&lt;/p&gt;
&lt;pre&gt;
# modprobe aes-x86_64
# cat /proc/crypto
name         : aes
driver       : aes-asm
module       : aes_x86_64
priority     : 200
refcnt       : 1
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32
[...]
&lt;/pre&gt;

&lt;p&gt;Le module peut-être éventuellement ajouté au fichier &lt;code&gt;/etc/modules&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Je dois maintenant créer la partition qui va être chiffrée et la déclarer au système grâce à &lt;code&gt;partprobe&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;
# cfdisk /dev/sda
[...]
# apt-get install parted
[...]
# partprobe /dev/sda
&lt;/pre&gt;


&lt;p&gt;Pour chiffrer une partition avec LUKS, il faut la &quot;formater&quot; avec &lt;code&gt;cryptsetup&lt;/code&gt; et ensuite la déclarer au système &quot;&lt;code&gt;device mapper&lt;/code&gt;&quot;. Il est conseillé d'utiliser une phrase de mot de passe complexe.&lt;/p&gt;
&lt;pre&gt;
# cryptsetup luksFormat /dev/sda8

WARNING!
========
This will overwrite data on /dev/sda8 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
# cryptsetup luksOpen /dev/sda8 data
Enter LUKS passphrase: 
key slot 0 unlocked.
Command successful.
# ls /dev/mapper/
control  data
&lt;/pre&gt;

&lt;p&gt;C'est gagné, la partition est maintenant accessible grâce au chemin &lt;code&gt;/dev/mapper/data&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Il faut formater la partition, ici j'utilise &lt;code&gt;ext3&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;
# mkfs.ext3 -m 0 /dev/mapper/data
&lt;/pre&gt;

&lt;p&gt;La partition peut maintenant être utilisée par le système.&lt;/p&gt;


&lt;p&gt;Pour assurer le montage de la partition au démarrage, il faut la déclarer dans le fichier &lt;code&gt;/etc/crypttab&lt;/code&gt;. Cette déclaration permet de faire l'ouverture LUKS et la déclaration à &quot;&lt;code&gt;dev mapper&lt;/code&gt;&quot; en une opération. Ensuite &lt;code&gt;/etc/fstab&lt;/code&gt; pourra prendre le relais.&lt;/p&gt;
&lt;pre&gt;
# cat /etc/crypttab
# &amp;lt;target name&amp;gt; &amp;lt;source device&amp;gt;         &amp;lt;key file&amp;gt;      &amp;lt;options&amp;gt;
data    /dev/sda8       none            luks,timeout=1
&lt;/pre&gt;


&lt;p&gt;Ps: Le titre vient des &quot;&lt;a href=&quot;http://geekz.co.uk/schneierfacts/&quot; hreflang=&quot;en&quot;&gt;Bruce Schneier facts&lt;/a&gt;&quot;.&lt;br /&gt;
Ps2: Le formatage de la partition peut également se faire avec un version plus longue de la commande &lt;code&gt;cryptsetup&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
# cryptsetup --verify-passphrase --verbose --hash=sha256 --cipher=aes-cbc-essiv:sha256 --key-size=256 luksFormat /dev/sda8
[...]
&lt;/pre&gt;</description>
    
    
    
          <comments>http://www.bonz.org/tech/post/2008/08/07/Bruce-Schneier-knows-Alice-and-Bobs-shared-secret#comment-form</comments>
      <wfw:comment>http://www.bonz.org/tech/post/2008/08/07/Bruce-Schneier-knows-Alice-and-Bobs-shared-secret#comment-form</wfw:comment>
      <wfw:commentRss>http://www.bonz.org/tech/feed/rss2/comments/244</wfw:commentRss>
      </item>
    
  <item>
    <title>Et si je voulais devenir cuisinier moi aussi ?</title>
    <link>http://www.bonz.org/tech/post/2008/10/13/Et-si-je-voulais-devenir-cuisinier-moi-aussi</link>
    <guid isPermaLink="false">urn:md5:c327653a6a1f983dc368c0b071e74d81</guid>
    <pubDate>Mon, 13 Oct 2008 14:37:00 +0200</pubDate>
    <dc:creator>hr</dc:creator>
        <category>truc</category>
        <category>build</category><category>debian</category><category>etch</category><category>gcc</category><category>libc</category>    
    <description>    &lt;p&gt;Si l'envie vous prenait de cuisiner sur votre système Debian, il y a un package à installer&amp;nbsp;: &lt;code&gt;build-essential&lt;/code&gt;. Ce paquet va, par dépendance, installer les outils principalement utilisés pour la compilation de sources comme un compilateur ou les librairies c standard.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.bonz.org/tech/post/2008/10/13/Et-si-je-voulais-devenir-cuisinier-moi-aussi#comment-form</comments>
      <wfw:comment>http://www.bonz.org/tech/post/2008/10/13/Et-si-je-voulais-devenir-cuisinier-moi-aussi#comment-form</wfw:comment>
      <wfw:commentRss>http://www.bonz.org/tech/feed/rss2/comments/307</wfw:commentRss>
      </item>
    
  <item>
    <title>Mais mon surnom c'est plus simple à écrire</title>
    <link>http://www.bonz.org/tech/post/2008/08/07/Mais-mon-surnom-cest-plus-simple-a-ecrire</link>
    <guid isPermaLink="false">urn:md5:0fbf8dc7a5c35806ab168d37df6e6dc3</guid>
    <pubDate>Wed, 08 Oct 2008 15:49:00 +0200</pubDate>
    <dc:creator>hr</dc:creator>
        <category>système</category>
        <category>debian</category><category>dedibox</category><category>nick</category>    
    <description>&lt;p&gt;Si vous faites comme moi partie des gens qui ont un nick/login vraiment court (moins de quatre lettres en fait), vous avez été victime, vous aussi, des contraintes de la dedibox. En effet, le compte utilisateur doit faire entre quatre et vingt caractères. Mon login en fait deux ... maiiiiiiiis la situation n'est pas irrémédiable.&lt;/p&gt;    &lt;p&gt;C'est finalement assez simple, mais globalement dangereux. Si une déconnexion survenait au cours de cette manipulation, le système pourrait devenir inaccessible pour ce compte utilisateur. J'ai l'habitude de ne pas donner d'accès ssh à mon utilisateur &lt;code&gt;root&lt;/code&gt;, donc je m'autodétruis dans un nuage de fumée bleue.&lt;/p&gt;


&lt;p&gt;On commence par passer &lt;code&gt;root&lt;/code&gt;, ensuite il faut modifier les fichiers &lt;code&gt;/etc/shadow&lt;/code&gt;, &lt;code&gt;/etc/passwd&lt;/code&gt; et &lt;code&gt;/etc/group&lt;/code&gt;. Dans les deux premiers fichiers, il suffit de modifier le login à changer en début de ligne. Il doit se trouver une fois dans chaque fichier. Par exemple&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
# cat /etc/shadow
[...]
hrhr:$1$foobar$blihblahbloh:13923:0:99999:7:::
[...]
# cat /etc/passwd
[...]
hrhr:x:1000:1000:hrhr,,,:/home/hrhr:/bin/bash
[...]
&lt;/pre&gt;

&lt;p&gt;Le fichier &lt;code&gt;/etc/group&lt;/code&gt; contient aussi un certain nombre de références à ce login.&lt;/p&gt;
&lt;pre&gt;
# grep hrhr /etc/group
dialout:x:20:hrhr
cdrom:x:24:hrhr
floppy:x:25:hrhr
audio:x:29:hrhr
video:x:44:hrhr
plugdev:x:46:hrhr
hrhr:x:1000:
&lt;/pre&gt;


&lt;p&gt;Ensuite on s'occupe de déplacer le répertoire &lt;code&gt;home&lt;/code&gt; de l'utilisateur. On commence par modifier le chemin du répertoire &lt;code&gt;home&lt;/code&gt; dans &lt;code&gt;/etc/passwd&lt;/code&gt;. Ensuite on déplace le répertoire pour refléter ces changements.&lt;/p&gt;
&lt;pre&gt;
# mv /home/oldnick /home/newnick
&lt;/pre&gt;

&lt;p&gt;Et voualaaaaaaaaaa. A la prochaine connexion, le nouvel utilisateur peut être utilisé.&lt;/p&gt;


&lt;p&gt;&lt;ins&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/ins&gt;:
Personnellement, je fais les substitutions à grands coups de &lt;code&gt;:%s/hrhr/hr/gc&lt;/code&gt; dans vim, ce qui me permet de faire plusieurs substitutions par ligne sur tout le fichier. Chaque substitution doit être confirmée.&lt;br /&gt;
On pourrait également utiliser sed&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
sed -i.bak 's/hrhr/hr/g' /etc/group
&lt;/pre&gt;</description>
    
    
    
          <comments>http://www.bonz.org/tech/post/2008/08/07/Mais-mon-surnom-cest-plus-simple-a-ecrire#comment-form</comments>
      <wfw:comment>http://www.bonz.org/tech/post/2008/08/07/Mais-mon-surnom-cest-plus-simple-a-ecrire#comment-form</wfw:comment>
      <wfw:commentRss>http://www.bonz.org/tech/feed/rss2/comments/245</wfw:commentRss>
      </item>
    
  <item>
    <title>All your poll are belong to us</title>
    <link>http://www.bonz.org/tech/post/2008/03/04/All-your-poll-are-belong-to-us</link>
    <guid isPermaLink="false">urn:md5:478d1667209ca96937554b17ebdbc7f8</guid>
    <pubDate>Wed, 05 Mar 2008 18:36:00 +0100</pubDate>
    <dc:creator>hr</dc:creator>
        <category>système</category>
        <category>debian</category><category>etch</category><category>net-snmp</category><category>snmp</category>    
    <description>&lt;p&gt;J'ai aujourd'hui besoin de tenir à l'oeil certaines valeurs sur un serveur, le plus simple semble d'utiliser &lt;a href=&quot;http://net-snmp.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;net-snmp&lt;/a&gt; et &lt;a href=&quot;http://oss.oetiker.ch/mrtg/&quot; hreflang=&quot;en&quot;&gt;mrtg&lt;/a&gt;. Ce serveur SNMP peut être très facilement étendu, mais est assez mal documenté à mon goût. Je vais donc faire un petit tour des méthodes simples d'utilisation de net-snmp pour récupérer des données non communes.&lt;/p&gt;    &lt;p&gt;Les versions de net-snmp et mrtg installées sur ma debian etch sont &lt;code&gt;snmpd (5.2.3-7etch2)&lt;/code&gt; et &lt;code&gt;mrtg (2.14.7-2)&lt;/code&gt;. Je suppose que vous êtes à l'aise avec le concept de SNMP et que net-snmp et mrtg sont configurés.&lt;br /&gt;
En faisant le tour du site web, du fichier de configuration par défaut et de goo^Winternet, j'ai pû lister les méthodes suivantes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;exec&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extend&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pass&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je passe sur l'utilisation de &lt;a href=&quot;http://net-snmp.sourceforge.net/wiki/index.php/TUT:Writing_a_Subagent&quot; hreflang=&quot;en&quot;&gt;subagent&lt;/a&gt; qui est plus complexe.&lt;br /&gt;
Le script que je vais utiliser tient en 2 lignes et se trouve dans &lt;code&gt;/tmp/test_snmp&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;#!/bin/sh
echo 42
&lt;/pre&gt;

&lt;p&gt;Pour information, le fichier &lt;code&gt;/usr/share/snmp/mibs/UCD-SNMP-MIB.txt&lt;/code&gt; indique que l'OID 2021 correspond à &lt;code&gt;ucdavis&lt;/code&gt; et se trouve après le noeud &lt;code&gt;enterprise&lt;/code&gt; (ce qui donne &lt;code&gt;.1.3.6.1.4.1.2021&lt;/code&gt;). Cet OID sera utilisé pour ajouter de nouvelles données en test, en réalité il faudrait utiliser un OID correspondant à l'environnement d'utilisation (un OID d'entreprise délivré par &lt;a href=&quot;http://www.iana.org/assignments/enterprise-numbers&quot; hreflang=&quot;en&quot;&gt;IANA&lt;/a&gt; par exemple).&lt;/p&gt;


&lt;h2&gt;&lt;code&gt;exec&lt;/code&gt;&lt;/h2&gt;
&lt;pre&gt;
[...]
exec test1 /tmp/test_snmp
exec .1.3.6.1.4.1.2021.60 test2 /tmp/test_snmp
[...]
&lt;/pre&gt;

&lt;p&gt;Après redémarrage, on vérifie que les données sont bien accessibles en SNMP&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
$ snmpwalk -v 1 -c private localhost .1.3.6.1.4.1.2021
[...]
UCD-SNMP-MIB::extIndex.1 = INTEGER: 1
UCD-SNMP-MIB::extNames.1 = STRING: test_snmp
UCD-SNMP-MIB::extCommand.1 = STRING: /tmp/test_snmp
UCD-SNMP-MIB::extResult.1 = INTEGER: 0
UCD-SNMP-MIB::extOutput.1 = STRING: 42
UCD-SNMP-MIB::extErrFix.1 = INTEGER: 0
UCD-SNMP-MIB::extErrFixCmd.1 = STRING:
[...]
UCD-SNMP-MIB::ucdavis.60.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.60.2.1 = STRING: &amp;quot;test_snmp&amp;quot;
UCD-SNMP-MIB::ucdavis.60.3.1 = STRING: &amp;quot;/tmp/test_snmp&amp;quot;
UCD-SNMP-MIB::ucdavis.60.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.60.101.1 = STRING: &amp;quot;42&amp;quot;
UCD-SNMP-MIB::ucdavis.60.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.60.103.1 = &amp;quot;&amp;quot;
[...]
&lt;/pre&gt;

&lt;p&gt;La première forme est plus explicite et la deuxième forme est mieux maitrisée puisqu'on choisit l'OID destination.&lt;/p&gt;


&lt;p&gt;Le problème est que le serveur snmp n'est pas très satisfait de l'utilisation de &lt;code&gt;exec&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
[...]
Mar  4 17:28:45 snmp.priv snmpd[8678]: /etc/snmp/snmpd.conf: line 363: Error: Warning: relocatable 'exec' format will change in a future release - See 'NET-SNMP-EXTEND-MIB' for an alternative
Mar  4 17:28:45 snmp.priv snmpd[8678]: net-snmp: 2 error(s) in config file(s)
&lt;/pre&gt;


&lt;h2&gt;&lt;code&gt;extend&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;L'uilisation de &lt;code&gt;extend&lt;/code&gt; se fait via une mib spéciale (&lt;code&gt;NET-SNMP-EXTEND-MIB.txt&lt;/code&gt;), sur une debian elle se trouve dans &lt;code&gt;/usr/share/snmp/mibs&lt;/code&gt;. L'utilisation de cette option permet de créer automatiquement des entrées sous l'OID &lt;code&gt;.1.3.6.1.4.1.8072&lt;/code&gt; par défaut.&lt;/p&gt;
&lt;pre&gt;
extend test_snmp /tmp/test_snmp
extend .1.3.6.1.4.1.2021.60 test_snmp /tmp/test_snmp
&lt;/pre&gt;

&lt;p&gt;Les résultats se trouvent aux 2 endroits suivants&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
$ snmpwalk -v 1 -c private localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
[...]
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 3
NET-SNMP-EXTEND-MIB::nsExtendCommand.&amp;quot;test_snmp&amp;quot; = STRING: /tmp/test_snmp
NET-SNMP-EXTEND-MIB::nsExtendArgs.&amp;quot;test_snmp&amp;quot; = STRING: 
NET-SNMP-EXTEND-MIB::nsExtendInput.&amp;quot;test_snmp&amp;quot; = STRING: 
NET-SNMP-EXTEND-MIB::nsExtendCacheTime.&amp;quot;test_snmp&amp;quot; = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType.&amp;quot;test_snmp&amp;quot; = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType.&amp;quot;test_snmp&amp;quot; = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage.&amp;quot;test_snmp&amp;quot; = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus.&amp;quot;test_snmp&amp;quot; = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.&amp;quot;test_snmp&amp;quot; = STRING: 42
NET-SNMP-EXTEND-MIB::nsExtendOutputFull.&amp;quot;test_snmp&amp;quot; = STRING: 42
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines.&amp;quot;test_snmp&amp;quot; = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult.&amp;quot;test_snmp&amp;quot; = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.&amp;quot;test_snmp&amp;quot;.1 = STRING: 42
[...]
$ snmpwalk -v 1 -c private localhost .1.3.6.1.4.1.2021.60
UCD-SNMP-MIB::ucdavis.60.1.0 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.60.2.1.2.9.116.101.115.116.95.115.110.109.112 = STRING: &amp;quot;/tmp/test_snmp&amp;quot;
UCD-SNMP-MIB::ucdavis.60.2.1.3.9.116.101.115.116.95.115.110.109.112 = &amp;quot;&amp;quot;
UCD-SNMP-MIB::ucdavis.60.2.1.4.9.116.101.115.116.95.115.110.109.112 = &amp;quot;&amp;quot;
UCD-SNMP-MIB::ucdavis.60.2.1.5.9.116.101.115.116.95.115.110.109.112 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.60.2.1.6.9.116.101.115.116.95.115.110.109.112 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.60.2.1.7.9.116.101.115.116.95.115.110.109.112 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.60.2.1.20.9.116.101.115.116.95.115.110.109.112 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.60.2.1.21.9.116.101.115.116.95.115.110.109.112 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.60.3.1.1.9.116.101.115.116.95.115.110.109.112 = STRING: &amp;quot;42&amp;quot;
UCD-SNMP-MIB::ucdavis.60.3.1.2.9.116.101.115.116.95.115.110.109.112 = STRING: &amp;quot;42&amp;quot;
UCD-SNMP-MIB::ucdavis.60.3.1.3.9.116.101.115.116.95.115.110.109.112 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.60.3.1.4.9.116.101.115.116.95.115.110.109.112 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.60.4.1.2.9.116.101.115.116.95.115.110.109.112.1 = STRING: &amp;quot;42&amp;quot;
&lt;/pre&gt;

&lt;p&gt;La deuxième forme revient à peu de choses près au résultat de la commande &lt;code&gt;exec&lt;/code&gt; avec utilisation d'un chemin.&lt;br /&gt;
La première forme permet d'obtenir beaucoup d'informations intéressantes comme le nombre d'éléments qui étendent la mib (&lt;code&gt;NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0&lt;/code&gt; on remarque donc que j'ai nettoyé la réponse puisqu'il annonce 3 scripts d'extension). On peut récupérer la réponse complète &lt;code&gt;NET-SNMP-EXTEND-MIB::nsExtendOutputFull.&quot;test_snmp&quot;&lt;/code&gt; ou les lignes une à une &lt;code&gt;NET-SNMP-EXTEND-MIB::nsExtendOutLine.&quot;test_snmp&quot;.x&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Le point faible de cette méthode subsiste dans le type de donnée renvoyé, notre script envoit un chiffre et il est considéré comme une chaine de caractère. De la même façon, si on veut générer un compteur sur 32 ou 64 bits, c'est impossible avec cette méthode.&lt;/p&gt;


&lt;h2&gt;&lt;code&gt;pass&lt;/code&gt;&lt;/h2&gt;

&lt;p&gt;L'utilisation de cette option de configuration oblige à choisir un OID en dessous duquel le script est entièrement maitre. Il faut donc avoir recours à un script plus complexe qui permet de donner le type de valeur et la valeur pour un OID donné. Le script &lt;code&gt;passtest&lt;/code&gt; donne une bonne idée d'un script basique permettant cette intégration. Je ne rentrerai pas dans les détails.&lt;/p&gt;
&lt;pre&gt;
pass .1.3.6.1.4.1.2021.60 /tmp/test_snmp
&lt;/pre&gt;

&lt;p&gt;Dans l'idée, le script est appelé avec les arguments &lt;code&gt;&amp;lt;reqtype&amp;gt;&lt;/code&gt; &lt;code&gt;&amp;lt;miboid&amp;gt;&lt;/code&gt;. Avec &lt;code&gt;reqtype&lt;/code&gt; qui correspond à &lt;code&gt;-g&lt;/code&gt; pour une requête &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;-n&lt;/code&gt; pour un &lt;code&gt;GETNEXT&lt;/code&gt; et un &lt;code&gt;-s&lt;/code&gt; pour un &lt;code&gt;SET&lt;/code&gt;. le chemin OID est donné par &lt;code&gt;miboid&lt;/code&gt;.&lt;br /&gt;
Dans le cas des commandes &lt;code&gt;GET&lt;/code&gt; et &lt;code&gt;GETNEXT&lt;/code&gt;, la réponse est constituée de 3 lignes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l'OID de réponse;&lt;/li&gt;
&lt;li&gt;le type de la valeur retournée, au choix dans integer, gauge, counter, timeticks, ipaddress, objectid, ou string;&lt;/li&gt;
&lt;li&gt;la valeur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans le cas de la commande &lt;code&gt;SET&lt;/code&gt;, le script ne doit rien retourner.&lt;/p&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Il faut bien en finir avec tout ce bazar, il est intéressant de jeter un coup d'oeil du côté de &lt;code&gt;snmpd.conf(5)&lt;/code&gt; pour les détails, d'autres options de configuration comme &lt;code&gt;pass_persist&lt;/code&gt; peuvent être utilisées. Personnellement, j'utilise la solution &lt;code&gt;extend&lt;/code&gt; qui me semble raisonnablement simple à mettre en place et à utiliser.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Rooooooooxanne</title>
    <link>http://www.bonz.org/tech/post/2007/11/29/Rooooooooxanne</link>
    <guid isPermaLink="false">urn:md5:cfd1f01a515fd6d23ce16069008c5dba</guid>
    <pubDate>Thu, 29 Nov 2007 13:04:00 +0100</pubDate>
    <dc:creator>hr</dc:creator>
        <category>système</category>
        <category>debian</category><category>font</category><category>truetype</category><category>ubuntu</category>    
    <description>&lt;p&gt;J'ai eu besoin d'installer une jolie police de caractère (font en anglois) sur une ubuntu/debian (ce sont les seules distributions que j'ai testé) récemment et je me suis rendu compte de deux choses&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;C'est très simple à faire&lt;/li&gt;
&lt;li&gt;C'est peu documenté&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Donc voici la marche à suivre pour installer une police de caractère sans les droits administrateur.&lt;/p&gt;    &lt;p&gt;Il faut, &lt;em&gt;a priori&lt;/em&gt;, trouver un &lt;a href=&quot;http://del.icio.us/sberder/font&quot;&gt;belle police à installer&lt;/a&gt; (à noter les &quot;Free Fonts Of The Month&quot; de SmashingMagazine). Après avoir téléchargé la police en question et décompressé éventuellement une archive, les fichiers &lt;code&gt;.ttf&lt;/code&gt; sont disponible.&lt;/p&gt;
&lt;pre&gt;
$ wget http://www.kottke.org/plus/type/silkscreen/download/silkscreen.tar.gz -P ~/tmp
[...]
$ tar zxvf ~/tmp/silkscreen.tar.gz -C ~/tmp/
slkscr.ttf
slkscrb.ttf
slkscre.ttf
slkscreb.ttf
readme.txt
&lt;/pre&gt;

&lt;p&gt;Un fois les fichiers de police à disposition, il suffit de créer un répertoire &lt;code&gt;.fonts&lt;/code&gt; dans son répertoire &lt;code&gt;home&lt;/code&gt;, d'y placer les polices et rafraichir le cache de polices.&lt;/p&gt;
&lt;pre&gt;
$ mkdir ~/.fonts
$ cp ~/tmp/*.ttf ~/.fonts
$ fc-cache -f -v ~/.fonts/
/home/hr/.fonts/: caching, 1 fonts, 0 dirs
/var/cache/fontconfig: not cleaning unwritable cache directory
/home/hr/.fontconfig: cleaning cache directory
fc-cache: succeeded
&lt;/pre&gt;

&lt;p&gt;Et c'est parti, pas plus compliqué que ça.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Un peu d'ordre dans la maison</title>
    <link>http://www.bonz.org/tech/post/2007/09/16/Un-peu-dordre-dans-la-maison</link>
    <guid isPermaLink="false">urn:md5:bd42dd60504167574cc12fc371bbec7c</guid>
    <pubDate>Tue, 18 Sep 2007 19:22:00 +0200</pubDate>
    <dc:creator>hr</dc:creator>
        <category>système</category>
        <category>areca</category><category>debian</category><category>etch</category><category>initramfs</category><category>kernel</category><category>sata</category><category>v2.6</category>    
    <description>&lt;p&gt;Je viens d'installer un serveur avec plein de SATA dans le ventre, la bête a 30To de disques répartis sur 2 controleurs Areca ARC-1280ML. L'installation d'une &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian/etch&lt;/a&gt; se passe sans problème, noyau 2.6.18-5-686. Après avoir installé le système sur 2 disques connectés à la carte mère (contrôleur ICH5R sur pilote &lt;code&gt;ata_piix&lt;/code&gt;), des volumes RAID5 sont créés sur les cartes Areca (pilote &lt;code&gt;arcmsr&lt;/code&gt;). Le démarrage s'arrête sur une invite de commande &lt;code&gt;initramfs&lt;/code&gt;, la partition racine est introuvable.&lt;/p&gt;    &lt;pre&gt;
Begin: Waiting for root file system... ...
Done.
        Check root= bootarg cat /proc/cmdline
        or missing modules, devices: cat /proc/modules ls /dev
ALERT! /dev/sda1 does not exist. Dropping to a shell!


Busybox v1.1.3 (Debian 1:1.1.1-4) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
(initramfs)
&lt;/pre&gt;


&lt;p&gt;Mais qu'est-ce qu'il nous arrive madame Michu&amp;nbsp;? Tout simplement, les nouveaux volumes sont détectés par le noyau avant le disque sur lequel est installé le système. Résultat, le système n'est plus sur &lt;code&gt;/dev/sda&lt;/code&gt; mais sur &lt;code&gt;/dev/sdc&lt;/code&gt;. Et le plus drôle c'est qu'il est parfois sur &lt;code&gt;/dev/sdb&lt;/code&gt; parce que les controleurs Areca mettent du temps à se déclarer.&lt;/p&gt;


&lt;p&gt;Comment laver l'affront que nous impose ce petit impudent&amp;nbsp;? En jouant avec la partition RAM d'initialisation, j'ai nommé &lt;code&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Initramfs&quot;&gt;initramfs&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;C'est extrêmement simple, on va demander à la partition de démarrage en RAM de charger les modules sata dans l'ordre qu'on souhaite. Dans notre cas, le pilote &lt;code&gt;ata_piix&lt;/code&gt; avant &lt;code&gt;arcmsr&lt;/code&gt;. Les outils Debian permettent de faire ça de façon très simple, il suffit d'ajouter les modules qu'on souhaite voir chargés lors du démarrage dans le fichier &lt;code&gt;/etc/initramfs-tools/modules&lt;/code&gt;. Les modules doivent être listés, un par ligne dans l'ordre de chargement souhaité. Dans notre cas, il suffit de préciser le module qui prend en charge le disque de démarrage.&lt;/p&gt;
&lt;pre&gt;
# cat /etc/initramfs-tools/modules
[...]
ata_piix
&lt;/pre&gt;

&lt;p&gt;Il faut maintenant mettre à jour l'image en RAM pour propager ces modifications.&lt;/p&gt;
&lt;pre&gt;
# update-initramfs -v -k 2.6.18-5-686 -t -u
Keeping /boot/initrd.img-2.6.18-5-686.dpkg-bak
update-initramfs: Generating /boot/initrd.img-2.6.18-5-686
Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/scsi_mod.ko
Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/scsi_transport_spi.ko
Adding module /lib/modules/2.6.18-5-686/kernel/drivers/scsi/aic7xxx/aic7xxx.ko
[...]
Adding binary /sbin/mdrun
Building cpio /boot/initrd.img-2.6.18-5-686 initramfs
Backup /boot/initrd.img-2.6.18-5-686.bak
&lt;/pre&gt;

&lt;p&gt;Un petit redémarrage et tout est revenu en ordre. Et le plus beau, c'est que lorsque vous devrez mettre à jour votre noyau, le nouveau noyau fera automatiquement la reconstruction de l'image RAM d'initialisation.&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>