<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le blog de Michauko &#187; ligne de commande</title>
	<atom:link href="http://michauko.org/blog/category/ligne-de-commande/feed/" rel="self" type="application/rss+xml" />
	<link>http://michauko.org/blog</link>
	<description>Si tu ne comprends pas le titre de l&#039;article, passe ton chemin</description>
	<lastBuildDate>Mon, 16 Apr 2012 10:10:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>windows 7 : donner quelques permissions sur les services à un utilisateur non-admin</title>
		<link>http://michauko.org/blog/2011/04/03/windows-7-donner-quelques-permissions-sur-les-services-a-un-utilisateur-non-admin/</link>
		<comments>http://michauko.org/blog/2011/04/03/windows-7-donner-quelques-permissions-sur-les-services-a-un-utilisateur-non-admin/#comments</comments>
		<pubDate>Sun, 03 Apr 2011 18:50:35 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[PS3]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[ACL]]></category>
		<category><![CDATA[elevate]]></category>
		<category><![CDATA[PS3mediaserver]]></category>
		<category><![CDATA[setacl]]></category>
		<category><![CDATA[seven]]></category>
		<category><![CDATA[subinacl]]></category>
		<category><![CDATA[vista]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1205</guid>
		<description><![CDATA[Bon, ce fut long et pénible pour réussir à faire un truc simple avec ce joli Windows Seven : &#171;&#160;permettre à un utilisateur sans droit de relancer un service&#160;&#187;, en l&#8217;occurrence &#171;&#160;PS3 Media Server&#160;&#187; que je tente d&#8217;héberger sur un Windows plutôt qu&#8217;un Linux pour de sombres raisons. Donc je me fais un aide-mémoire qui [...]]]></description>
			<content:encoded><![CDATA[<p>Bon, ce fut long et pénible pour réussir à faire un truc simple avec ce joli Windows Seven : &laquo;&nbsp;permettre à un utilisateur sans droit de relancer un service&nbsp;&raquo;, en l&#8217;occurrence &laquo;&nbsp;PS3 Media Server&nbsp;&raquo; que je tente d&#8217;héberger sur un Windows plutôt qu&#8217;un Linux pour de sombres raisons. Donc je me fais un aide-mémoire qui servira à d&#8217;autres et à d&#8217;autres cas similaires j&#8217;en suis sûr.<br />
Bien sûr, hors de question de faire sauter l&#8217;UAC (User Access Control = popup casse-pied pour dire &laquo;&nbsp;oui je veux être admin&nbsp;&raquo;) et encore moins donner les droits admin à un compte qui ne l&#8217;est pas, ni le pass de l&#8217;admin. Juste pour rallumer un service, ce serait trop.<span id="more-1205"></span></p>
<h1>Quelques pistes sans succès</h1>
<p>Pour ce qui est de faire un .bat contenant des &laquo;&nbsp;service stop/start MonService&nbsp;&raquo;, il faut être admin.<br />
Pour l&#8217;option qui consiste à cocher la case &laquo;&nbsp;toujours lancer en admin&nbsp;&raquo; ? non, pas sur les .bat&#8230;<br />
Alors je le le compile en .exe avec n&#8217;importe quel &laquo;&nbsp;bat2exe&nbsp;&raquo; ? bah non, le .exe n&#8217;est pas signé par une autorité de certif. reconnue => blablablabla UAC encore<br />
Ok, je génère mes propres &laquo;&nbsp;root certif&nbsp;&raquo;, signe, compile, danse nu un soir de pleine lune et tout ça ??? non là c&#8217;est trop (pas la danse, la génération/ajout de mes propres clefs de certifs). Je dégomme pas les mouches au bazooka.<br />
Bon, retour à l&#8217;option .bat. Les gens parlent de créer une tâche planifiée contenant l&#8217;appel à ce .bat, avec l&#8217;option admin puis faire un raccourci vers la tâche. Ca marche, pas de confirmation via l&#8217;UAC. Sauf que les tâches sont liées à l&#8217;utilisateur. Donc mon utilisateur sans droit ne la voit pas&#8230; La planifier en son nom ou l&#8217;inverse (dans son compte, planifier avec le compte et mot de passe de l&#8217;admin), pas mieux.<br />
J&#8217;ai aussi tenté l&#8217;utilisation d&#8217;un outil tiers, appelé &laquo;&nbsp;elevate&nbsp;&raquo;, pour lancer une commande avec des droits supérieurs. Oui, mais non, pour le non-admin, ça change rien, il faut obtenir ce droit, donc se signer.<br />
Bref, c&#8217;est lourd.</p>
<h1>The solution : SubInACL</h1>
<p><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b&#038;displaylang=en">Chez Microsoft, il y a un bout de Resource Kit, la commande SubInACL.exe</a>. Elle permet de manipuler les permissions de n&#8217;importe quel objet : fichiers, imprimantes, services etc. Youpiiii.<br />
La syntaxe est bien moisie, mais ça marche.<br />
Il faut :</p>
<ul>
<li>
<strong>Lancer une fenêtre DOS &laquo;&nbsp;en tant qu&#8217;administrateur&nbsp;&raquo;</strong>
</li>
<li>
Taper la commande suivante (dans mon cas, lire la doc pour le reste) :<br />
<code>C:\Program Files\Windows Resource Kits\Tools>subinacl /service "PS3 Media Server" /GRANT=MAMACHINE\monutilisateursansdroit=TO</code><br />
la liste des codes est ici : <a href="http://www.eventlogblog.com/blog/2007/11/setting-service-permissions-wi.html">http://www.eventlogblog.com/blog/2007/11/setting-service-permissions-wi.html</a>
</li>
<li>
Réaliser que je ne sais quel droit générique de l&#8217;admin tombe du coup. Je me suis retrouvé avec tout le monde capable de relancer ce service SAUF l&#8217;admin <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8216;suffit d&#8217;appliquer la commande à lui-même
</li>
</ul>
<p>Et voilà</p>
<h1>Autre piste : SETACL</h1>
<p>Lorsque j&#8217;ai essayé avec setacl, ça ne fonctionnait pas. Je n&#8217;avais pas compris qu&#8217;il fallait lancer la fenêtre DOS en admin, à ce moment là, comme je l&#8217;ai fait pour SubInACL. Je pense que le problème venait de là. La syntaxe donnait un truc comme ça :<br />
<code>setacl -on "PS3 Media Server" -ot srv -ace "n:monutilisateursansdroit;p:start_stop,read" -actn ace</code></p>
<p>Voilà. Evidemment, un petit sudo, ce serait quand même plus simple. Mais avec un OS qui ne sait rien faire de base en ligne de commande&#8230; Ah quoi que, peut-être avec du powershell etc&#8230; Il aurait bien fallu une 20aine de ligne de baratin pour y arriver à mon avis.<br />
Amusez-vous bien.<br />
Ah oui, à la fin, un .bat tout bête faisant un net stop/start &laquo;&nbsp;PS3 Media Server&nbsp;&raquo; passe donc tout seul.</p>
<p>Ca doit marcher sous Vista aussi, voire Windows Server 2008.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/04/03/windows-7-donner-quelques-permissions-sur-les-services-a-un-utilisateur-non-admin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SFTP : mot de passe en ligne de commande</title>
		<link>http://michauko.org/blog/2010/08/24/sftp-mot-de-passe-en-ligne-de-commande/</link>
		<comments>http://michauko.org/blog/2010/08/24/sftp-mot-de-passe-en-ligne-de-commande/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 08:45:29 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[lftp]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[sftp]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1095</guid>
		<description><![CDATA[Petit souci du jour : utiliser sftp en ligne de commande, avec un mot de passe, en mode batch, MAIS sans passer par une authentification par clef. Sachant que sftp n&#8217;accepte pas de mot de passe en ligne de commande (ni via une redirection depuis STDIN). Pourquoi donc me direz-vous ? simplement parce-que dans l&#8217;éventualité [...]]]></description>
			<content:encoded><![CDATA[<p>Petit souci du jour : utiliser sftp en ligne de commande, avec un mot de passe, en mode batch, MAIS sans passer par une authentification par clef. Sachant que sftp n&#8217;accepte pas de mot de passe en ligne de commande (ni via une redirection depuis STDIN).</p>
<p>Pourquoi donc me direz-vous ? simplement parce-que dans l&#8217;éventualité où faire bouger le prestataire en face de vous (celui qui héberge le serveur SSH) coûterait trop d&#8217;énergie, on va supposer qu&#8217;on ne peut pas facilement faire avaler notre clef publique à l&#8217;hébergeur du serveur SSH.</p>
<p>Bref, la commande traditionnelle est :</p>
<pre>sftp utilisateur@serveur
Connecting to serveur...
utilisateur@serveur's password:
sftp&gt;</pre>
<p>J&#8217;ai trouvé une méthode simple : utiliser le client SFTP de &laquo;&nbsp;PuTTY&nbsp;&raquo;.<br />
Je pensais au départ utiliser celui de &laquo;&nbsp;lftp&nbsp;&raquo; et sauvegarder ma connexion (avec mot de passe) en bookmark, mais comme mon login dans l&#8217;histoire est un utilisateur de domaine windows (ouais, le serveur SSH en face est sous windows O_o), y&#8217;a un \ dans le login et même en le doublant, lftp semble mal le digérer, ben j&#8217;étais aussi bloqué.</p>
<p>Bref, en installant les outils de PuTTY :</p>
<pre>aptitude install putty-tools</pre>
<p>On peut alors taper :</p>
<pre>psftp -pw mon_pass utilisateur@serveur
Using username "utilisateur".
Remote working directory is /
psftp&gt;</pre>
<p><strong>Attention : le mot de passe est en clair dans la ligne de commande, donc dans les processus etc etc. Donc c&#8217;est pas idéal comme condition.</strong><br />
Enfin, je n&#8217;ai pas mis le paramètre -b pour mon batch, car ce n&#8217;est pas le propos là.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/08/24/sftp-mot-de-passe-en-ligne-de-commande/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Montage NTFS et CIFS en fstab</title>
		<link>http://michauko.org/blog/2009/12/02/montage-ntfs-et-cifs-en-fstab/</link>
		<comments>http://michauko.org/blog/2009/12/02/montage-ntfs-et-cifs-en-fstab/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 16:30:08 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[CIFS]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[ntfs-3g]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=983</guid>
		<description><![CDATA[Ca peut s&#8217;avérer pratique parfois, et lors d&#8217;une automatisation d&#8217;un traitement quelconque, carrément indispensable. Voici un rapide aide-mémoire pour déclarer en /etc/fstab des montages CIFS (montage de répertoires partagés Windows via Samba) et NTFS (des partitions, disques USB etc, mais en lecture/écriture, pas lecture seule). D&#8217;abord, s&#8217;assurer que vous avez le paquet ntfs-3g (si besoin [...]]]></description>
			<content:encoded><![CDATA[<p>Ca peut s&#8217;avérer pratique parfois, et lors d&#8217;une automatisation d&#8217;un traitement quelconque, carrément indispensable. Voici un rapide aide-mémoire pour déclarer en <code>/etc/fstab</code> des montages CIFS (montage de répertoires partagés Windows via Samba) et NTFS (des partitions, disques USB etc, mais en lecture/écriture, pas lecture seule).</p>
<p>D&#8217;abord, s&#8217;assurer que vous avez le paquet <code>ntfs-3g</code> (si besoin d&#8217;écriture sur le disque/partition NTFS) et le paquet <code>smbfs</code> (Samba FileSystem) pour les partages CIFS.</p>
<p>Vous pouvez tester facilement avec des commandes genre <code>mount -t cifs</code> ou <code>mount -t ntfs-3g</code>. Dans le cas du CIFS, il  y a certaines options à passer, notamment l&#8217;utilisateur, le domaine etc. C&#8217;est presque plus simple dans <code>/etc/fstab</code>.</p>
<p>Bref, voici la chose illustrée par l&#8217;exemple :</p>
<pre>srv:/etc# cat fstab
###
# blabla habituel
### puis :
//srvwin1/partage1      /mnt/srv1prt1      cifs    uid=root,credentials=/etc/cifs.credentials,domain=MONDOM 0 0
//srvwin1/partage2      /mnt/srv1prt2      cifs    uid=root,credentials=/etc/cifs.credentials,domain=MONDOM 0 0
//srvwin2/blabla1       /mnt/srv2prt1      cifs    uid=root,credentials=/etc/cifs.credentials,domain=MONDOM 0 0
/dev/sdb1               /mnt/usbsdb1       ntfs-3g defaults,locale=fr_FR.utf8 0 0</pre>
<p>Dans cet exemple tout simple, on monte 3 partages CIFS, mappé sur l&#8217;utilisateur root de la machine linux, en se signant avec les informations contenues dans <code>/etc/cifs.credentials</code> (ci-dessous) sur le domaine NT &laquo;&nbsp;MONDOM&nbsp;&raquo;.<br />
Et dans /mnt/usbsdb1, on monte un disque USB (ou SCSI ou SATA d&#8217;ailleurs), en NTFS lecture/écriture.</p>
<p>Ensuite, de simples &laquo;&nbsp;<code>mount /mnt/celui_que_vous_voulez</code>&nbsp;&raquo; pour monter.</p>
<p>Le contenu de /etc/cifs.credentials est de la forme :</p>
<pre>username=mon_login_windows
password=mon_p4ss</pre>
<p>Il peut évidemment être différent pour chaque montage. Pensez à le protéger (<code>chmod 600 /etc/cifs.credentials</code>)</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/12/02/montage-ntfs-et-cifs-en-fstab/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Monter un serveur NTP, configurer les clients Windows et Linux</title>
		<link>http://michauko.org/blog/2009/11/13/monter-un-serveur-ntp-configurer-les-clients-windows-et-linux/</link>
		<comments>http://michauko.org/blog/2009/11/13/monter-un-serveur-ntp-configurer-les-clients-windows-et-linux/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 14:44:50 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[GPO]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[ntpd]]></category>
		<category><![CDATA[ntpdate-debian]]></category>
		<category><![CDATA[tcpdump]]></category>
		<category><![CDATA[W32Time]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=926</guid>
		<description><![CDATA[Bon, un p&#8217;tit billet aide-mémoire sur la configuration d&#8217;un serveur NTP Linux et des postes Windows et Linux de votre LAN. C&#8217;est un sujet tout bête, mais entre les postes Windows qui ne sont pas très bavards à ce sujet et l&#8217;amalgame, côté Linux, entre les paquets ntp et ntpdate utilisant ou pas des fichiers [...]]]></description>
			<content:encoded><![CDATA[<p>Bon, un p&#8217;tit billet aide-mémoire sur la configuration d&#8217;un serveur NTP Linux et des postes Windows et Linux de votre LAN.<br />
C&#8217;est un sujet tout bête, mais entre les postes Windows qui ne sont pas très bavards à ce sujet et l&#8217;amalgame, côté Linux, entre les paquets <code>ntp</code> et <code>ntpdate</code> utilisant ou pas des fichiers communs de conf, on peut être momentanément perdu. J&#8217;espère être clair par la suite.<span id="more-926"></span></p>
<h1>Préparez le serveur</h1>
<h2>Le paquet qui va bien</h2>
<p>Sur le serveur, installez le paquet &laquo;&nbsp;ntp&nbsp;&raquo;. Faisant office de serveur, il se met à jour (donc il fait office de client, si je ne dis pas connerie). Pas la peine donc d&#8217;installer &laquo;&nbsp;ntpdate&nbsp;&raquo; qui est un autre client possible.<br />
Les options du serveur sont dans <code>/etc/default/ntp.conf</code>, j&#8217;en parle un peu plus bas. Lisez le <code>man</code>.<br />
Les paramètres de <code>/etc/ntp.conf</code> sont :</p>
<pre>serv:~# egrep -v "^#|^$" /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap</pre>
<p>J&#8217;ai juste ajouté la plage 10.0.0.0 (c&#8217;est un exemple) pour autoriser mon LAN à joindre ce serveur.</p>
<h2>Firewalling ?</h2>
<p>Il faudra ouvrir en sortie le port &laquo;&nbsp;ntp&nbsp;&raquo; (123), en UDP, depuis le serveur vers les serveurs amonts. Si c&#8217;est la liste par défaut de <code>/etc/ntp.conf</code>, à savoir les &laquo;&nbsp;*.pool.ntp.org&nbsp;&raquo;, c&#8217;est une longue liste, amenée à évoluer dans le temps je suppose. A vous de voir comment faire. Le plus simple : ouvrir UDP/123 vers le web, point.<br />
Pour que les clients joignent votre serveur, c&#8217;est pareil, il faudra ouvrir le LAN vers votre passerelle, port UDP/123.</p>
<h2>Testez</h2>
<p>Je recommande d&#8217;ajouter <code>-l /var/log/ntp.log</code> dans les options du fichier <code>/etc/default/ntp</code>, soit :</p>
<pre>NTPD_OPTS='-g -l /var/log/ntp.log'</pre>
<p>Puis de redémarrer le service via :</p>
<pre>/etc/init.d/ntpd restart</pre>
<p>Vous verrez dans <code>/var/log/ntp.log</code> si votre serveur se met à jour, de combien de temps etc. <strong>Pensez à enlever ce log ou sinon à mettre en place une rotation de logs qui va avec</strong>.<br />
Ca ressemble à ça :</p>
<pre>13 Nov 11:19:30 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:19:30 ntpd[18381]: time reset -0.169417 s
13 Nov 11:19:30 ntpd[18381]: kernel time sync status change 0001
13 Nov 11:23:57 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:31:29 ntpd[18381]: synchronized to 91.121.86.143, stratum 2
13 Nov 11:35:30 ntpd[18381]: time reset +0.189846 s
13 Nov 11:35:50 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:40:06 ntpd[18381]: synchronized to 81.19.16.225, stratum 2
13 Nov 11:42:57 ntpd[18381]: synchronized to 91.121.121.160, stratum 2</pre>
<p>On est maintenant prêt à dire à notre LAN d&#8217;aller taper sur ce serveur pour régler l&#8217;heure.</p>
<h1>Les postes Windows</h1>
<p>Le service W32Time (&laquo;&nbsp;Horloge Windows&nbsp;&raquo;) est en automatique par défaut depuis Windows XP. Il s&#8217;appuie sur le paramètre qu&#8217;on trouvera dans la clef de registre <code>HKLM/SOFTWARE/Policies/Microsoft/W32Time/Parameters</code>. La clef est &laquo;&nbsp;NtpServer&nbsp;&raquo;.<br />
Il faut donc mettre à jour cette clef, d&#8217;une manière ou d&#8217;une autre.</p>
<h2>&#8230;via des GPO</h2>
<p>Si vous êtes en domaine Windows, le réglage est ici :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/11/20091113_1502521.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/11/20091113_1502521-150x150.png" alt="NTP" title="NTP" width="150" height="150"  /></a></p>
<p>En gros, vous indiquez le nom de votre serveur.<br />
Vous pouvez forcer la mise à jour des GPO sur un poste, pour tester, via <code>gpupdate /force</code>.</p>
<h2>En pas GPO (domaine Samba-sans-GPO, Workgroup etc)</h2>
<p>Il faut modifier la clef mentionnée plus haut, d&#8217;une manière ou d&#8217;une autre ; et probablement relancer le service &laquo;&nbsp;Horloge Windows&nbsp;&raquo;.</p>
<h2>Sous Windows, comment tester</h2>
<p>Le service Windows ne raconte rien et les &laquo;&nbsp;event logs&nbsp;&raquo; systèmes, c&#8217;est chiant.<br />
Je suggère sur le serveur, un joli <code>tcpdump</code> qui vous montrera qui fait quoi :</p>
<pre>serv:~# tcpdump -i eth0 dst port ntp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:14:49.071538 IP pc315.maboite.fr.ntp > imag.imag.fr.ntp: NTPv3, symmetric active, length 48
15:14:49.172627 IP imag.imag.fr.ntp > pc315.maboite.fr.ntp: NTPv3, symmetric active, length 48
15:15:29.305824 IP pc666.maboite.fr.ntp > serv.maboite.fr.ntp: NTPv3, symmetric active, length 48
15:15:29.306158 IP serv.maboite.fr.ntp > pc666.maboite.fr.ntp: NTPv3, symmetric active, length 48
</pre>
<p>Là, on voit un &laquo;&nbsp;pc315&#8243; qui continue de demander à l&#8217;extérieur (le firewall l&#8217;autorise pour l&#8217;instant) et un pc666 qui a prit le pli.</p>
<h1>Les postes Linux</h1>
<p>Installez le paquet &laquo;&nbsp;ntpdate&nbsp;&raquo; et planifiez <code>ntpdate-debian</code> en crontab. Le manuel explique : ntpdate-debian utilise le fichier <code>/etc/default/ntpdate</code> pour la configuration (liste des serveurs de temps etc). Il contient, sans les commentaires :</p>
<pre>NTPDATE_USE_NTP_CONF=yes
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
NTPOPTIONS=""</pre>
<p>Mais, dans ce cas, à cause du &laquo;&nbsp;yes&nbsp;&raquo;, il utilise la conf de l&#8217;éventuel <code>/etc/ntp.conf</code> installé via le serveur NTP (paquet ntp). Comme on ne l&#8217;a pas mis sur les clients (ça sert à rien de faire tourner un serveur NTP), il faut donc soit passer <code>NTPDATE_USE_NTP_CONF</code> à &laquo;&nbsp;no&nbsp;&raquo;, soit ne pas planifier <code>ntpdate-debian</code>, mais <code>ntpdate</code> avec une tartine de paramètres.<br />
Si vous mettez &laquo;&nbsp;no&nbsp;&raquo;, il faudra indiquer dans NTPSERVERS au moins / uniquement votre serveur du LAN. J&#8217;ai constaté qu&#8217;avec le nom de machine, ça ne passait pas. Mais avec l&#8217;IP, c&#8217;est OK. A creuser.</p>
<p>Pigé ? moi-même, je me perds régulièrement là-dedans.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/11/13/monter-un-serveur-ntp-configurer-les-clients-windows-et-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Limiter la bande passante entre 2 hosts (dont l&#8217;un en Linux)</title>
		<link>http://michauko.org/blog/2009/10/20/limiter-la-bande-passante-entre-2-hosts-dont-lun-en-linux/</link>
		<comments>http://michauko.org/blog/2009/10/20/limiter-la-bande-passante-entre-2-hosts-dont-lun-en-linux/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 09:23:55 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[bande passante]]></category>
		<category><![CDATA[LARTC]]></category>
		<category><![CDATA[limitation]]></category>
		<category><![CDATA[tc]]></category>
		<category><![CDATA[WSUS]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=865</guid>
		<description><![CDATA[Dans la série aide-mémoire. Imaginez : approbation d&#8217;une tonne de patchs de sécurité Windows en retard sur un WSUS avec des réplicats. Immédiatement, il commence à downloader, via un proxy Squid sous Linux, donc via une machine Linux. Et là, votre bande passante est réduite à de la poussière car WSUS, via le proxy, pompe [...]]]></description>
			<content:encoded><![CDATA[<p><em>Dans la série aide-mémoire.</em><br />
Imaginez : approbation d&#8217;une tonne de patchs de sécurité Windows en retard sur un WSUS avec des réplicats. Immédiatement, il commence à downloader, via un proxy Squid sous Linux, donc via une machine Linux.<br />
Et là, votre bande passante est réduite à de la poussière car WSUS, via le proxy, pompe tout, à fond.<br />
Raaaaaaaaaa. M&#8217;énerve.</p>
<p>Vite, iptables doit pouvoir m&#8217;aider. Je suis une buse en QoS, mais bon, j&#8217;ai confiance en Google <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <span id="more-865"></span></p>
<p>Après quelques recherches, je suis tombé sur <a href="http://lartc.org/" target="_blank">LARTC</a>, Linux Advanced Routing &#038; Traffic Control. En quelques mots, une bande de fous-furieux qui aiment les lignes de commandes compliquées (à côté de ça, iptables est un joujou) pour faire de la QoS.<br />
Y&#8217;a un howto super complet : <a href="http://www.traduc.org/docs/howto/vf/lartc.html">http://www.traduc.org/docs/howto/vf/lartc.html</a>. Pas le temps, ça sent le sujet compliqué et vaste. On verra plus tard.</p>
<p>Là je veux juste limiter le trafic entre mon proxy et ce p~!?[n de serveur WSUS.</p>
<p>J&#8217;ai trouvé <a href="http://lartc.org/howto/lartc.ratelimit.single.html" target="_blank">3 lignes magiques ici </a>(après avoir survolé le <code>man tc</code> histoire de suivre le loin ce que je fais) :</p>
<pre>tc qdisc add dev eth0 root handle 1: cbq avpkt 1000 bandwidth 10mbit
tc class add dev eth0 parent 1: classid 1:1 cbq rate 400kbit allot 1500 prio 5 bounded isolated
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.1.2 flowid 1:1</pre>
<p>Je voulais limiter le trafic vers 192.168.1.2 via eth0 à 50 kB/s, soit en gros 400 kbit/s.<br />
Pour annuler, j&#8217;ai &laquo;&nbsp;annulé&nbsp;&raquo; les commandes, si je peux dire. Sans être trop sûr de moi, j&#8217;ai simplement tenté ça :</p>
<pre>tc filter del dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.1.2 flowid 1:1
tc class del dev eth0 parent 1: classid 1:1 cbq rate 400kbit allot 1500 prio 5 bounded isolated
tc qdisc del dev eth0 root handle 1: cbq avpkt 1000 bandwidth 10mbit</pre>
<p>Je n&#8217;ai pas vu d&#8217;effet de bord (genre, tout bloqué ou rien qui ne se rétablit une fois le <em>tc</em> annulé). Donc on va dire que c&#8217;est probablement un peu crade, que je n&#8217;y comprends pas tout, mais que ça marche.</p>
<p>Voilà, si ça peut vous servir, j&#8217;en suis content.<br />
noob-powered</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/10/20/limiter-la-bande-passante-entre-2-hosts-dont-lun-en-linux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>netcat : je &#171;&#160;déTAR&#160;&#187; d&#8217;une machine vers l&#8217;autre</title>
		<link>http://michauko.org/blog/2009/10/01/netcat-je-detar-dune-machine-vers-lautre/</link>
		<comments>http://michauko.org/blog/2009/10/01/netcat-je-detar-dune-machine-vers-lautre/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:03:09 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[netcat]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[scp]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=669</guid>
		<description><![CDATA[&#171;&#160;déTAR&#160;&#187; à distance Pense-bête : j&#8217;ai un gros .tar sur un serveur, je dois l&#8217;extraire sur un autre serveur. MAIS, sur cet autre serveur, je n&#8217;ai pas la place pour récupérer le .tar puis le décompresser, c&#8217;est-à-dire stocker deux fois en terme d&#8217;espace. Donc j&#8217;utilise netcat pour faire un &#171;&#160;pipe&#160;&#187; entre commande d&#8217;une machine à [...]]]></description>
			<content:encoded><![CDATA[<h1>&laquo;&nbsp;déTAR&nbsp;&raquo; à distance</h1>
<p>Pense-bête : j&#8217;ai un gros .tar sur un serveur, je dois l&#8217;extraire sur un autre serveur. MAIS, sur cet autre serveur, je n&#8217;ai pas la place pour récupérer le .tar puis le décompresser, c&#8217;est-à-dire stocker deux fois en terme d&#8217;espace.<br />
Donc j&#8217;utilise netcat pour faire un &laquo;&nbsp;pipe&nbsp;&raquo; entre commande d&#8217;une machine à l&#8217;autre.</p>
<p>Une fois le programme netcat installé, peu importe par quel biais, et en considérant que vous n&#8217;avez pas de restriction réseau entre les 2 machines (sinon ouvrez le port ci-dessous en UDP), vous faites ceci :<span id="more-669"></span></p>
<p>Sur la machine cible, on prépare une socket en écoute, ici sur le port 12345 :</p>
<pre>moi@destination:/ou/je/veux/ecrire$ netcat -l -p 12345 | tar xvf -</pre>
<p>Sur la machine émettrice, on balance la purée dans le tuyau :</p>
<pre>moi2@source:~$ cat monfichier.tar | netcat aladdin 12345</pre>
<p>A adapter dans le cas d&#8217;un fichier .bz2 ou .gz, par exemple.</p>
<h1>Recopie d&#8217;arborescence d&#8217;un serveur à l&#8217;autre</h1>
<p>Une autre utilisation très courante est la suivante : recopier une arborescence d&#8217;un serveur à l&#8217;autre, sans utiliser rsync, scp etc. Pourquoi se passer de ces outils ? il y a des cas où on ne les a pas. Et puis là on évite le cryptage, tout ça, charge CPU, blablabla.<br />
Ca donne :</p>
<pre>dest$ nc -l p 12345 | tar x</pre>
<pre>src$ tar cvf - mon_arborescence | nc dest 12345</pre>
<h1>EDIT : truc bien crade : ça marche aussi pour injecter du SQL&#8230;</h1>
<pre>dest$ nc -l p 12345 | mysql -u monlogin -p</pre>
<pre>src$ cat test.sql | nc dest 12345</pre>
<p>Attention à ce que vous faites là quand même.<br />
Notez qu&#8217;au lancement de la commande sur la machine de destination, le mot de passe mysql est demandé tout de suite.</p>
<p>Voilà<br />
A+</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/10/01/netcat-je-detar-dune-machine-vers-lautre/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Envoyer un mail après un commit sur un repository SVN</title>
		<link>http://michauko.org/blog/2009/08/04/envoyer-un-mail-apres-un-commit-sur-un-repository-svn/</link>
		<comments>http://michauko.org/blog/2009/08/04/envoyer-un-mail-apres-un-commit-sur-un-repository-svn/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 14:24:06 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=419</guid>
		<description><![CDATA[Voici la manip à faire, sauce Debian, où tout est prévu, tout est packagé Contexte Je suppose que vous avez un SVN qui tourne. Vous voulez qu&#8217;à chaque &#171;&#160;commit&#160;&#187;, un mail soit envoyé à une personne (ou une liste de personnes), contenant tout ce qu&#8217;on peut en attendre : message, fichiers impactés etc. Sur Internet, [...]]]></description>
			<content:encoded><![CDATA[<p>Voici la manip à faire, sauce Debian, où tout est prévu, tout est packagé <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>Contexte</h1>
<p>Je suppose que vous avez un SVN qui tourne. Vous voulez qu&#8217;à chaque &laquo;&nbsp;commit&nbsp;&raquo;, un mail soit envoyé à une personne (ou une liste de personnes), contenant tout ce qu&#8217;on peut en attendre : message, fichiers impactés etc.<br />
Sur Internet, tout le monde y va de son script en perl, ruby, bash etc. Debian propose un truc tout fait. J&#8217;aime bien <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Le principe est le suivant : l&#8217;outil SVN a déjà tout prévu. Il y a des &laquo;&nbsp;hooks&nbsp;&raquo; (grappin = bout de code appelable à un instant donné d&#8217;une commande SVN) qu&#8217;il suffit d&#8217;activer. Un tout petit peu de paramétrage et ça roule.<span id="more-419"></span></p>
<h1>Installez le script-qui-va-bien</h1>
<p>Le paquet <code>subversion-tools</code> vous apporte tout un tas de scripts pré-machés (voir <code>/usr/share/subversion/hook-scripts</code>), notamment un pour envoyer un mail bien propre.</p>
<h1>Activez le &laquo;&nbsp;hook&nbsp;&raquo;</h1>
<p>Il y a un modèle dans <code>/votre/repo/svn/hooks/</code>, nommé <code>post-commit.tmpl</code>. Copiez-le en <code>post-commit</code>, avec les bonnes permissions (idéalement via <code>cp post-commit.tmpl post-commit</code>).<br />
Editez-le, lisez le baratin et enfin adaptez la dernière ligne indiquant quelle adresse mail est destinatrice <em>(je considère que le serveur hébergeant SVN est capable d&#8217;envoyer des mails).</em><br />
Exemple :</p>
<pre>svnsrv:/svn/monrepo/hooks# tail post-commit
# the Subversion repository at
# http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/ and
# http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/

REPOS="$1"
REV="$2"

/usr/share/subversion/hook-scripts/commit-email.pl \
  "$REPOS" "$REV" <strong>mon.adresse@mail.com</strong>
</pre>
<p>Si votre serveur est capable d&#8217;envoyer des mails, vous n&#8217;avez rien à faire de plus, sinon, il faudra jouer avec la définition des variables $sendmail et $smtp_server (<strong>l&#8217;une ou l&#8217;autre</strong>, lisez les commentaires) dans le script <code>/usr/share/subversion/hook-scripts/commit-email.pl</code>.</p>
<p>Enfin, si vous voulez, la ligne de commande accepte plusieurs destinataires (au moins 2, je n&#8217;ai pas testé plus ni lu le code pour savoir).</p>
<h1>Testez</h1>
<p>Normalement, c&#8217;est tout. Faire un commit quelconque et voyez le résultat.<br />
J&#8217;utilise TortoiseSVN comme client, sous Windows ; ça marche nickel. Si vous vous plantez dans la configuration, Tortoise vous remonte l&#8217;erreur indiquant par exemple que le script <code>/usr/share/subversion/hook-scripts/commit-email.pl</code> est KO.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/08/04/envoyer-un-mail-apres-un-commit-sur-un-repository-svn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Concept de &#171;&#160;Port knocking&#160;&#187;</title>
		<link>http://michauko.org/blog/2009/07/28/concept-de-port-knocking/</link>
		<comments>http://michauko.org/blog/2009/07/28/concept-de-port-knocking/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 16:02:39 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=411</guid>
		<description><![CDATA[Je ne vais pas plagier, je profite de ce qui est écrit là : http://www.commandlinefu.com/commands/view/2785/port-knocking pour résumer en quelques mots et surtout faire connaître ce site (www.commandlinefu.com) qui rassemble des commandes parfois bien sympathiques. On découvre des choses. A vos aggrégateurs RSS, voici son flux. Port knocking : - tant que votre poste client n&#8217;a [...]]]></description>
			<content:encoded><![CDATA[<p>Je ne vais pas plagier, je profite de ce qui est écrit là : <a href="http://www.commandlinefu.com/commands/view/2785/port-knocking">http://www.commandlinefu.com/commands/view/2785/port-knocking</a> pour résumer en quelques mots et surtout faire connaître ce site (<a href="http://www.commandlinefu.com/">www.commandlinefu.com</a>) qui rassemble des commandes parfois bien sympathiques. On découvre des choses.<br />
A vos aggrégateurs RSS, <a href="http://feeds2.feedburner.com/Command-line-fu">voici son flux</a>.</p>
<p>Port knocking :<br />
- tant que votre poste client n&#8217;a pas fait une bonne séquence au guichetier (knock-daemon <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , tel ou tel service est bloqué pour votre IP, via iptables.<br />
- à la fin, vous jouez une séquence pour fermer, ou pas.</p>
<p>Bon j&#8217;avoue, je n&#8217;ai pas testé. M&#8217;enfin, ça doit marcher tout ça. A voir, comme avec le genre fail2ban, si ça ne peut pas être utilisé pour provoquer des dénis de service &#8211; le genre je fais bannir/fermer telle IP que je ne suis pas, évidemment.</p>
<p>Ca + du changement de port sur certains services (SSH notamment), et votre machine devrait être une tombe, normalement. Reste les services publics (http&#8230;) pour chercher une faille.</p>
<p>(et puis si vous adorez mon site, ce dont je ne doute pas, voici <a href="http://michauko.org/blog/feed/rss/">mon flux</a> &#8211; façon de parler ; mais je doute que vous aviez besoin de mon aide pour le trouver)</p>
<p>Bonnes vacances</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/07/28/concept-de-port-knocking/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Joujou avec les encodages 8859-1, UTF-8 etc</title>
		<link>http://michauko.org/blog/2009/05/12/joujou-avec-les-encodages-8859-1-utf-8-etc/</link>
		<comments>http://michauko.org/blog/2009/05/12/joujou-avec-les-encodages-8859-1-utf-8-etc/#comments</comments>
		<pubDate>Tue, 12 May 2009 13:50:49 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[iso-8859-1]]></category>
		<category><![CDATA[od]]></category>
		<category><![CDATA[rxp]]></category>
		<category><![CDATA[tcs]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=295</guid>
		<description><![CDATA[A l&#8217;occasion de l&#8217;écriture d&#8217;un script Python pour convertir un CSV-dégueu en XML-UTF8, le tout en environnement windows+linux et partant d&#8217;un CSV issu d&#8217;un Excel issu de copier-coller dégueulasses, j&#8217;ai eu à jouer avec des conversions de charset, de formats UNIX/Windows etc etc Ca m&#8217;a permis de découvrir 2/3 outils, objet de cet article ; [...]]]></description>
			<content:encoded><![CDATA[<p>A l&#8217;occasion de l&#8217;écriture d&#8217;un script Python pour convertir un CSV-dégueu en XML-UTF8, le tout en environnement windows+linux et partant d&#8217;un CSV issu d&#8217;un Excel issu de copier-coller dégueulasses, j&#8217;ai eu à jouer avec des conversions de charset, de formats UNIX/Windows etc etc<br />
Ca m&#8217;a permis de découvrir 2/3 outils, objet de cet article ; je passe sur la multitude d&#8217;autres problèmes de nettoyage du contenu issu du copier-coller : guillemets relookés par je ne sais qui (Word ?), tirets relookés aussi etc&#8230;<span id="more-295"></span></p>
<p>Les basiques :</p>
<ul>
<li>file : permet d&#8217;identifier un type de fichier, notamment, pour du texte brut, s&#8217;il est encodé en ISO-machin ou en UTF-8. A noter, si le texte en question est à l&#8217;intérieur d&#8217;un script, enfin bref, de quelque chose enrobant ce texte, &laquo;&nbsp;file&nbsp;&raquo; se limitera à détecter le type de script, par exemple. Dans ce cas, extraire le texte en question dans un fichier à part (via des &laquo;&nbsp;grep&nbsp;&raquo;) afin d&#8217;analyser l&#8217;encodage de ce texte. J&#8217;ai pas trouvé plus simple</li>
<li>dos2unix : conversion des fins de lignes DOS (2 octets \010\013 (ou l&#8217;inverse) en un seul (\010 ou l&#8217;autre, je ne sais jamais <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Si vous êtes passés par un transfert FTP type ASCII, c&#8217;est fait totomatiquement. Mais en SFTP ou autre chose, niet.</li>
<li>unix2dos : devinez</li>
</ul>
<p>Ensuite :</p>
<ul>
<li>tcs : permet de convertir un fichier encodé avec un charset vers un autre, exemple : <code>tcs -f 8859-1 -t utf source > dest</code>. Faites des &laquo;&nbsp;file&nbsp;&raquo; ensuite pour voir.</li>
<li>rxp : valide la syntaxe XML (et l&#8217;encodage utilisé) d&#8217;un fichier XML</li>
<li>od : affiche en hexa, ascii, octal (etc) un fichier. On peut cumuler et mettre en parallèle l&#8217;ascii avec l&#8217;hexa, par exemple</li>
</ul>
<p>Voilà, c&#8217;est tout.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/05/12/joujou-avec-les-encodages-8859-1-utf-8-etc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>linuxlogo : inutile donc indispensable</title>
		<link>http://michauko.org/blog/2009/04/16/linuxlogo-inutile-donc-indispensable/</link>
		<comments>http://michauko.org/blog/2009/04/16/linuxlogo-inutile-donc-indispensable/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 08:43:31 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[inittab]]></category>
		<category><![CDATA[linuxlogo]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=225</guid>
		<description><![CDATA[Venant tout juste d&#8217;installer une Debian Lenny toute fraîche, c&#8217;est l&#8217;occasion d&#8217;indiquer comment rendre votre terminal (sur la console) ou lors d&#8217;une connexion SSH un peu plus sexy, genre : En quelques mots : - installez le paquet &#171;&#160;linuxlogo&#160;&#187; - choisissez votre logo, en testant via linuxlogo -L list (ou lisez le &#171;&#160;man&#160;&#187;) puis, par [...]]]></description>
			<content:encoded><![CDATA[<p>Venant tout juste d&#8217;installer une Debian Lenny toute fraîche, c&#8217;est l&#8217;occasion d&#8217;indiquer comment rendre votre terminal (sur la console) ou lors d&#8217;une connexion SSH un peu plus sexy, genre :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2009/04/20090416_103414.png"><img src="http://michauko.org/blog/wp-content/uploads/2009/04/20090416_103414-300x155.png" alt="linuxlogo" title="linuxlogo" width="300" height="155" class="aligncenter size-medium wp-image-227" /></a><span id="more-225"></span></p>
<p>En quelques mots :<br />
- installez le paquet &laquo;&nbsp;linuxlogo&nbsp;&raquo;<br />
- choisissez votre logo, en testant via <code>linuxlogo -L list</code> (ou lisez le &laquo;&nbsp;man&nbsp;&raquo;) puis, par exemple <code>linuxlogo -L bsd</code><br />
- enfin, modifiez les lignes suivantes dans <code>/etc/inittab</code>, afin d&#8217;ajouter <code>-f /etc/issue.linuxlogo</code> :<br />
<code>1:2345:respawn:/sbin/getty -f /etc/issue.linuxlogo 38400 tty1<br />
2:23:respawn:/sbin/getty -f /etc/issue.linuxlogo 38400 tty2<br />
3:23:respawn:/sbin/getty -f /etc/issue.linuxlogo 38400 tty3<br />
4:23:respawn:/sbin/getty -f /etc/issue.linuxlogo 38400 tty4<br />
5:23:respawn:/sbin/getty -f /etc/issue.linuxlogo 38400 tty5<br />
6:23:respawn:/sbin/getty -f /etc/issue.linuxlogo 38400 tty6</code><br />
- au besoin, allez faire un tour dans <code>/etc/linux_logo.conf</code><br />
- rebootez (ou redémarrez ces getty ?)</p>
<p>Voilà, ça sert à rien, mais ça en jette. Non ? Bon ok, c&#8217;était pour faire plaisir à un ancien collègue&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/04/16/linuxlogo-inutile-donc-indispensable/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IFS : séparateurs &amp; scripts BASH</title>
		<link>http://michauko.org/blog/2009/01/15/ifs-separateurs-scripts-bash/</link>
		<comments>http://michauko.org/blog/2009/01/15/ifs-separateurs-scripts-bash/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 17:54:48 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[IFS]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=174</guid>
		<description><![CDATA[Un truc qui m&#8217;a pris la tête il fût un temps et plus récemment, pour une question de syntaxe oubliée. Voilà le topo : vous faites un rapide script BASH pour faire tel ou tel traitement sur des fichiers. Et là, chaque espace dans un nom de fichier vous met en l&#8217;air votre script car [...]]]></description>
			<content:encoded><![CDATA[<p>Un truc qui m&#8217;a pris la tête il fût un temps et plus récemment, pour une question de syntaxe oubliée.<br />
Voilà le topo : vous faites un rapide script <a href="http://fr.wikipedia.org/wiki/Bourne-Again_shell">BASH</a> pour faire tel ou tel traitement sur des fichiers. Et là, chaque espace dans un nom de fichier vous met en l&#8217;air votre script car c&#8217;est vu comme &laquo;&nbsp;un saut de ligne&nbsp;&raquo;, dirons-nous.<br />
Il faut alors penser à jouer avec le &laquo;&nbsp;Internal Field Separator&nbsp;&raquo; &#8211; IFS &#8211; pour indiquer à <a href="http://fr.wikipedia.org/wiki/Bourne-Again_shell">BASH</a> quel(s) caractère(s) considérer comme saut de ligne.<br />
<strong>Par défaut, on trouve le saut de ligne &laquo;&nbsp;\n&nbsp;&raquo;, mais aussi la tabulation (&laquo;&nbsp;\t&nbsp;&raquo;) et l&#8217;espace !!!</strong></p>
<p><em>Simplification possible du problème : un extrêmiste pinguiste vous dira simplement que les espaces dans un nom de fichier, c&#8217;est mal. Ca a beau être mal, qui n&#8217;a jamais collé un espace dans un nom de fichier ? qui a le choix de ne pas le faire ? ou de tuer ses gentils utilisateurs le faisant ?</em></p>
<p>En images, ça donne ça :</p>
<pre>user@srv:/tmp$ echo >> liste
champ1.1;champ1.2;champ1.3
champ2.1;champ avec espace;champ2.3
champ   avec_tabulation;champ3.2;champ pour finir
CTRL-D pour finir la saisie

user@srv:/tmp$ for i in `cat liste`
> do
> echo $i
> done
champ1.1;champ1.2;champ1.3
champ2.1;champ
avec
espace;champ2.3
champ
avec_tabulation;champ3.2;champ
pour
finir</pre>
<p>Houuu le vilain résultat pour quelqu&#8217;un qui voulait voir afficher 3 lignes, pour par exemple faire un &laquo;&nbsp;awk -F &#8216;;&#8217; &#8216;{print $1 ou $2 ou $3}&#8217; pour récupérer tel ou tel champ d&#8217;un fichier CSV.<br />
Notez que le &laquo;&nbsp;$i&nbsp;&raquo; ne changera rien par rapport au $i.</p>
<p>Solution : redéfinir l&#8217;IFS.<br />
D&#8217;abord le on le sauvegarde car c&#8217;est pas simple de taper son contenu, la preuve, affichez cette variable, elle semble vide :</p>
<pre>user@srv:/tmp$ echo $IFS

user@srv:/tmp$
</pre>
<p>La difficulté de syntaxe mentionnée au début de l&#8217;article est de faire gober le &laquo;&nbsp;\n&nbsp;&raquo; sans interprétation par le shell, voici comment faire dans le cas qui nous intéresse : (le reste est <a href="http://fr.wikipedia.org/wiki/Internal_Field_Separator">expliqué sur wikipedia</a>)</p>
<pre>user@srv: /tmp$ OLDIFS=$IFS
user@srv:/tmp$ IFS=$'\n'
user@srv:/tmp$ for i in `cat liste`; do echo "$i"; done
champ1.1;champ1.2;champ1.3
champ2.1;champ avec espace;champ2.3
champ   avec_tabulation;champ3.2;champ pour finir
</pre>
<p>A noter que votre variable IFS restera en l&#8217;état pendant toute votre session (ie, votre shell ouvert). Donc n&#8217;oubliez pas de rétablir IFS=$OLDIFS.<br />
Si vous faites ceci dans un script, c&#8217;est alors propre à l&#8217;exécution du script.</p>
<p>Enfin, pour les bidouilleux, ça peut permettra de faire du découpage assez bizzarement :</p>
<pre>user@srv:/tmp$ IFS=a
user@srv:/tmp$ for i in `cat liste`; do echo "$i"; done
ch
mp1.1;ch
mp1.2;ch
mp1.3
ch
mp2.1;ch
mp
vec esp
ce;ch
mp2.3
ch
mp
vec_t
bul
tion;ch
mp3.2;ch
mp pour finir
</pre>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/01/15/ifs-separateurs-scripts-bash/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Fichiers PAR2 sous Linux</title>
		<link>http://michauko.org/blog/2008/11/28/fichiers-par2-sous-linux/</link>
		<comments>http://michauko.org/blog/2008/11/28/fichiers-par2-sous-linux/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 14:29:26 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[hellanzb]]></category>
		<category><![CDATA[newsgroups]]></category>
		<category><![CDATA[nzb]]></category>
		<category><![CDATA[par2]]></category>
		<category><![CDATA[par2repair]]></category>
		<category><![CDATA[par2verify]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=170</guid>
		<description><![CDATA[Je suis en train de revoir ma doc d&#8217;initiation à Debian (publication d&#8217;une nouvelle version très prochainement). Du coup, je sors quelques articles de cette doc. Là, je vais vous parler de la gestion des fichiers PAR2 sous Linux. Avis aux amateurs de newsgroups &#8211; tous ne savent pas qu&#8217;on peut gérer les .PAR2 autre [...]]]></description>
			<content:encoded><![CDATA[<p>Je suis en train de revoir ma doc d&#8217;initiation à Debian (publication d&#8217;une nouvelle version très prochainement). Du coup, je sors quelques articles de cette doc. Là, je vais vous parler de la gestion des fichiers PAR2 sous Linux. Avis aux amateurs de newsgroups &#8211; tous ne savent pas qu&#8217;on peut gérer les .PAR2 autre part que dans QuickPar2 sous Windows. Hum.</p>
<p>J&#8217;explique par l&#8217;exemple :</p>
<pre>aptitude install par2</pre>
<p>Vous comprendrez vite fait comment utiliser la commande de vérification ou réparation, un exemple :</p>
<pre>$ par2verify *PAR2 *
par2cmdline version 0.4, Copyright (C) 2003 Peter Brian Clements.
...
Loading "toto.vol001+01.PAR2".
Loaded 57 new packets including 1 recovery blocks
Loading "toto.vol002+02.PAR2".
Loaded 2 new packets including 2 recovery blocks
...
There are 27 recoverable files and 0 other files.
The block size used was 243200 bytes.
There are a total of 2002 data blocks.
The total size of the data files is 481943615 bytes.
Verifying source files:
Target: "toto.nfo" - found.
Target: "toto.r00" - found.
...
Target: "toto.r17" - missing.
...
Target: "toto.rar" - found.
Target: "toto.sfv" - found.
Scanning extra files:
File: "toto.r17.01-45" - found 45 of 83 data blocks from "toto.r17".
File: "toto.r17.50-83" - found 34 of 83 data blocks from "toto.r17".
Repair is required.
1 file(s) are missing.
26 file(s) are ok.
You have 1998 out of 2002 data blocks available.
You have 201 recovery blocks available.
Repair is possible.
You have an excess of 197 recovery blocks.
4 recovery blocks will be used to repair.</pre>
<p>Nickel, vous n&#8217;avez plus qu&#8217;à lancer <code>par2repair</code> pour effectuer la réparation.</p>
<p>Voilà, y&#8217;a pas beaucoup plus à dire.<br />
<strong>Ah si. Connaissiez-vous le paquet hellanzb et le plug-in hellafox pour Firefox ?</strong><br />
Un prochain article peut-être. Sinon lancez-vous, c&#8217;est assez simple. Un fichier de conf à revoir et zou.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/11/28/fichiers-par2-sous-linux/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Gros disque (&gt; 400 Go ?) et limitations</title>
		<link>http://michauko.org/blog/2008/11/03/gros-disque-400-go-et-limitations/</link>
		<comments>http://michauko.org/blog/2008/11/03/gros-disque-400-go-et-limitations/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 15:58:22 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[cfdisk]]></category>
		<category><![CDATA[fdisk]]></category>
		<category><![CDATA[gpt]]></category>
		<category><![CDATA[parted]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=163</guid>
		<description><![CDATA[Moi qui croyait n&#8217;être embetté que sous Windows par ces histoires de limitations de taille de fichiers, de disques, de partitions etc, je viens de m&#8217;en prendre une en pleine tête : formatter une grappe RAID5 de 6*500 Go (SATA), volume utile 2.5 To. Je n&#8217;avais pas trop fait attention à l&#8217;installation de la Debian, [...]]]></description>
			<content:encoded><![CDATA[<p>Moi qui croyait n&#8217;être embetté que sous Windows par ces histoires de limitations de taille de fichiers, de disques, de partitions etc, je viens de m&#8217;en prendre une en pleine tête : formatter une grappe RAID5 de 6*500 Go (SATA), volume utile 2.5 To.<br />
Je n&#8217;avais pas trop fait attention à l&#8217;installation de la Debian, mais j&#8217;ai loupé une question cruciale par méconnaissance : le type de table de partition.</p>
<p>Tout cela est expliqué et difficile à suivre sur <a href="http://en.wikipedia.org/wiki/GUID_Partition_Table">wikipedia</a>. Moi j&#8217;en retiendrai juste le résultat pratique.</p>
<h1>Eviter le problème à l&#8217;installation&#8230;</h1>
<p>Au tout premier accès au disque &laquo;&nbsp;virtuel&nbsp;&raquo; ainsi créé, je me souviens que le programme d&#8217;installation m&#8217;a demandé ça :<br />
<a href='http://michauko.org/blog/wp-content/uploads/2008/11/20081103_161843.png'><img src="http://michauko.org/blog/wp-content/uploads/2008/11/20081103_161843.png" alt="Type de table des partitions" title="Type de table des partitions" width="500" height="273" class="aligncenter size-full wp-image-164" /></a><br />
Ca n&#8217;arrive que sur des disques jamais initialisés (comme des grappes RAID) ou des disques virtuels. Peut-être aussi des disques sortis d&#8217;usine sans aucun pré-traitement, je ne sais pas.<br />
Par défaut, c&#8217;était GPT. J&#8217;ai pas trop réfléchi, j&#8217;ai mis msdos car j&#8217;avais déjà eu ce cas (sur un disque virtuel de petite taille, type machine VirtualBox pour faire joujou). En fait, la proposition par défaut doit être la bonne. Car impossible de formatter au delà de 300 Go ensuite (pourquoi 300 ?)<br />
Si comme moi, vous avez râté cette étape, voici ci-dessous comment corriger.</p>
<h1>&#8230;ou le corriger après coup</h1>
<p>FDISK ne dit trop rien à la création des partitions, masi il crée une partition de moindre taille.<br />
CFDISK est à peine plus bavard. En l&#8217;utilisant en console (et non pas à distance), j&#8217;ai vu passer des messages d&#8217;erreur, notamment :</p>
<pre>Very big device. Trying to use READ CAPACITY(16)</pre>
<p>De là, Google m&#8217;a expliqué le problème et il a fallu le rectifier en changeant ce type de table de partitions. Vous pourrez alors adresser tout l&#8217;espace physique de votre disque et le formatter.</p>
<p>Corrigez en utilisant l&#8217;outil PARTED :</p>
<pre>[root@toto: ~]$ parted /dev/sdb
GNU Parted 1.7.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart
Partition name?  []? MON_GROS_HD
File system type?  [ext2]? ext3
Start? 0
End? -1
(parted) p

Disk /dev/sdb: 2500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name    Flags
 1      17.4kB  2500GB  2500GB               MON_GROS_HD

(parted) quit
[root@toto: ~]$ fdisk -l /dev/sdb

Disk /dev/sdb: 2499.9 GB, 2499946741760 bytes
255 heads, 63 sectors/track, 303934 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      267350  2147483647+  ee  EFI GPT

[root@toto: ~]$ mkfs.ext3 /dev/sdb1
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
305184768 inodes, 610338551 blocks
30516927 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
18627 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
</pre>
<p>Et voilà le travail.</p>
<p>Au fait : ext3 semble être limité à 8 To. S&#8217;il y a quelques années 8 To paraissaient être une limite lointaine, actuellement, c&#8217;est moins évident. Il faudra alors passer en XFS ou ReiserFS (OK, j&#8217;évite les blagues de mauvais goût)</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/11/03/gros-disque-400-go-et-limitations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bip, &lt; tab &gt;, bip, &lt; tab &gt;, bip, &lt; tab &gt;, bip&#8230;&#8230;</title>
		<link>http://michauko.org/blog/2008/09/22/bip-bip-bip-bip/</link>
		<comments>http://michauko.org/blog/2008/09/22/bip-bip-bip-bip/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 19:44:59 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[bip]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=151</guid>
		<description><![CDATA[Pense-bête tout con mais ça fait tellement de bien : pour couper les p#*_&#160;&#187;~s de bips de votre shell ou de n&#8217;importe quelle fenêtre &#8211; je parle sous Ubuntu, allez dans Système -> Préférences -> Sons puis onglet &#171;&#160;Bip système&#160;&#187; et désactiver le truc qui va bien. Je ne sais pas comment j&#8217;ai fait pour [...]]]></description>
			<content:encoded><![CDATA[<p>Pense-bête tout con mais ça fait tellement de bien : pour couper les p#*_&nbsp;&raquo;~s de bips de votre shell ou de n&#8217;importe quelle fenêtre &#8211; je parle sous Ubuntu, allez dans Système -> Préférences -> Sons puis onglet &laquo;&nbsp;Bip système&nbsp;&raquo; et désactiver le truc qui va bien.</p>
<p>Je ne sais pas comment j&#8217;ai fait pour tenir si longtemps avec cette horreur.</p>
<p>(et avec modconf, vous pourrez virer une bonne fois le module pcspkr (&laquo;&nbsp;PC Speaker&nbsp;&raquo;), section kernerls/drivers/input/misc &#8211; yarglaaaaa)</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/09/22/bip-bip-bip-bip/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#171;&#160;Ubuntu UTF-8&#8243; VS. &#171;&#160;le reste en iso-8859-1&#8243;</title>
		<link>http://michauko.org/blog/2008/06/09/ubuntu-utf-8-vs-le-reste-en-iso-8859-1/</link>
		<comments>http://michauko.org/blog/2008/06/09/ubuntu-utf-8-vs-le-reste-en-iso-8859-1/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 14:35:38 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de gueule]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[accent]]></category>
		<category><![CDATA[iso-8859-1]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=121</guid>
		<description><![CDATA[Cher blog, Je t&#8217;écris car je suis globalement très content de mon Ubuntu, mais l&#8217;UTF-8, j&#8217;en ai pas besoin et dès que je fais du FTP, SFTP etc avec un système non-UTF-8, ça me fout en l&#8217;air les accents. Et des accents, j&#8217;aime bien en avoir. Alors bon, j&#8217;ai bien trouvé un article sur un [...]]]></description>
			<content:encoded><![CDATA[<p>Cher blog,</p>
<p>Je t&#8217;écris car je suis globalement très content de mon Ubuntu, mais l&#8217;UTF-8, j&#8217;en ai pas besoin et dès que je fais du FTP, SFTP etc avec un système non-UTF-8, ça me fout en l&#8217;air les accents. Et des accents, j&#8217;aime bien en avoir.<br />
Alors bon, j&#8217;ai bien trouvé un article sur un forum Ubuntu permettant de passer mon Ubuntu en iso-8859-15, mais ça a plutôt foiré qu&#8217;autre chose.<br />
Je suis donc revenu en arrière, je conserve ma distrib en UTF-8 des fois que je me mette au Japonais un jour, et je cherche plutôt à utiliser mes clients FTP en mode iso-8859-1. Ca me parait plus sain.</p>
<p>Maintenant que j&#8217;ai à peu près trouvé tout ce que je voulais, je peux taper sur mon NAS en retrouvant mes accents, ainsi que sur ma dedibox, elle aussi en iso-8truc.</p>
<h1>Dans l&#8217;explorateur de fichiers de Ubuntu (gnome)</h1>
<p>Lorsque je tape une URL du type ftp://login:pass@machine/ je n&#8217;ai pas trouvé où mettre un paramétrage sur le jeu de caractères&#8230;</p>
<h1>Dans gFTP</h1>
<p>Dans les options, on peut préciser un jeu de caractère et la conversion se passe bien</p>
<h1>Dans lftp</h1>
<p>Comme je suis adepte du mode texte et de screen, il fallait aussi que ça marche avec lftp. Pour trouver, j&#8217;ai tapé sous le prompt de lftp un beau <code>set -a | grep char</code> pour repérer le paramétrage qui allait bien. Ensuite, j&#8217;ai ajouté les deux lignes suivantes dans le fichier <code>/etc/lftp.conf</code> :</p>
<pre>set ftp:charset iso-8859-1
set sftp:charset iso-8859-1</pre>
<p>Voilà. Ca va être marrant à imposer l&#8217;UTF-8&#8230;.. et puis tant que Windows n&#8217;y sera pas, la majorité de la planète n&#8217;y passera pas. Enfin bref, de gros trolls poilus en perspective. Moi ça me gave ces gue-guerres&#8230;</p>
<h1>Et quelques jours après&#8230;.</h1>
<p>Ben finalement je commence à ne plus mettre d&#8217;accents nulle part. J&#8217;ai moins d&#8217;emmerdements&#8230;</p>
<p>Si quelqu&#8217;un a une doc biblique sur &laquo;&nbsp;comment ne pas être emmerdé par l&#8217;UTF-8&#8243;, je suis preneur.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/06/09/ubuntu-utf-8-vs-le-reste-en-iso-8859-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GRUB avec un disque SAS, des SATA et un BIOS un peu pourri</title>
		<link>http://michauko.org/blog/2008/03/29/grub-avec-un-disque-sas-des-sata-et-un-bios-un-peu-pourri/</link>
		<comments>http://michauko.org/blog/2008/03/29/grub-avec-un-disque-sas-des-sata-et-un-bios-un-peu-pourri/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 13:51:01 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[bios]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xubuntu]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2008/03/29/grub-avec-un-disque-sas-des-sata-et-un-bios-un-peu-pourri/</guid>
		<description><![CDATA[Voici un petit retour d&#8217;install-galère. Le but est de rappeler 2/3 arguments de GRUB bien pratiques et de faire remarquer quelques bizarreries du monde PC, dirons-nous. Récemment, j&#8217;ai installé une Ubuntu sur un PC équipé comme suit : - disque 1 : SAS (Serial-Attached-SCSI) contenant un windows - disque 2 : SATA vide prévu pour [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un petit retour d&#8217;install-galère. Le but est de rappeler 2/3 arguments de GRUB bien pratiques et de faire remarquer quelques bizarreries du monde PC, dirons-nous.</p>
<p>Récemment, j&#8217;ai installé une Ubuntu sur un PC équipé comme suit :<br />
- disque 1 : SAS (Serial-Attached-SCSI) contenant un windows<br />
- disque 2 : SATA vide prévu pour l&#8217;Ubuntu<br />
- disques 3 et 4 : 2 HD SATA de données.</p>
<p>Il n&#8217;y avait donc qu&#8217;un boot XP normal sur le SAS.</p>
<h3>Ordre de boot&#8230;</h3>
<p>Au départ, le BIOS (d&#8217;une marque connue qui ne permet rien ou si peu dans son BIOS) pointait sur le SAS puis SATA dans l&#8217;ordre de boot.<br />
J&#8217;ai choisi de mettre GRUB sur le disque SATA (et ainsi ne pas flinguer le MBR du Windows). Comme ça les OS ignorent presque que l&#8217;autre est là et je peux surtout virer un des 2 disques sans devoir réinstaller le MBR de l&#8217;un ou de l&#8217;autre.</p>
<p>J&#8217;ai donc dû inverser l&#8217;ordre de boot dans le BIOS. Rien de surprenant jusque là.<br />
Comme on ne peut pas préciser dans ce BIOS quel SATA ou quel SAS doit booter lorsqu&#8217;il y en a plusieurs, c&#8217;est donc le premier &#8211; pas d&#8217;autre possibilité.<br />
Ce premier détail &#8211; on s&#8217;en rend compte après une première install d&#8217;Ubuntu sur le SATA où rien ne boote &#8211; force à organiser ses disques (mes SATA en l&#8217;occurrence) de sorte que l&#8217;Ubuntu soit sur le premier SATA. Au départ, dans mon cas, c&#8217;était le dernier (je venais de l&#8217;ajouter&#8230;)</p>
<h3>sda, non, sdd, non (hd3,0) non plus&#8230; raaaaaah</h3>
<p>J&#8217;ai fait plusieurs réinstall de la chose et ça ne s&#8217;est pas vraiment passé 2 fois pareil au niveau de la détection des disques durs, donc de l&#8217;ordre d&#8217;apparition, donc de leurs noms, donc de la conf GRUB. Parfois tout marchait tout seul, parfois après install, plus rien ne bootait (ni Ubuntu, ni Windows).<br />
Un conseil donc, avant de lancer l&#8217;installation Ubuntu, lorsque vous êtes en liveOS, vous repérez bien le nom de chaque disque via un petit fdisk. <strong>Vous le faites avec le BIOS précablé vers le bon disque (mon SATA dans mon cas)</strong> :</p>
<pre>ubuntu:~$ sudo fdisk -l
Disque /dev/sda: 146.8 Go, 146815737856 octets
255 heads, 63 sectors/track, 17849 cylinders
Units = cylindres of 16065 * 512 = 8225280 bytes
Disk identifier: 0x12345678

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/sda1   *           1       17849   143372061    7  HPFS/NTFS

Disque /dev/sdb: 400.0 Go, 400088457216 octets
255 heads, 63 sectors/track, 48641 cylinders
Units = cylindres of 16065 * 512 = 8225280 bytes
Disk identifier: 0x12345678

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/sdb1   *           1        2432    19535008+  83  Linux
/dev/sdb2            2433        2681     2000092+  82  Linux swap / Solaris
/dev/sdb3            2682       48641   369173700   83  Linux

Disque /dev/sdc: 400.0 Go, 400088457216 octets
255 heads, 63 sectors/track, 48641 cylinders
Units = cylindres of 16065 * 512 = 8225280 bytes
Disk identifier: 0x12345678

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/sdc1               1       48641   390708801    7  HPFS/NTFS

Disque /dev/sdd: 400.0 Go, 400088457216 octets
255 heads, 63 sectors/track, 48641 cylinders
Units = cylindres of 16065 * 512 = 8225280 bytes
Disk identifier: 0x12345678

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/sdd1               1       48641   390708801    7  HPFS/NTFS</pre>
<p>Dans le cas ci-dessus, le SAS de 146 Go puis 3 SATA de 400 Go.<br />
Donc Windows = /dev/sda1 et Ubuntu sera = /dev/sdb1</p>
<p><em>FIXME : </em>Parfois, et je n&#8217;arrive pas à l&#8217;expliquer, le boot du Live Ubuntu m&#8217;a sorti un mode graphique un peu dégradé et l&#8217;ordre des disques changeaient&#8230;<br />
Au final, je me suis retrouvé avec une conf GRUB mauvaise et pas grand chose ne bootait.</p>
<p>Dans mon cas, la bonne conf est la suivante &#8211; je ne prends que la fin du fichier <code>/boot/grub/menu.lst</code> :</p>
<pre>## ## End Default Options ##

title           Ubuntu 7.10, kernel 2.6.22-14-generic
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.22-14-generic root=UUID=52f30332-a489-4df5-8305-85c4a1e7dba1 ro quiet splash
initrd          /boot/initrd.img-2.6.22-14-generic
quiet

title           Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.22-14-generic root=UUID=52f30332-a489-4df5-8305-85c4a1e7dba1 ro single
initrd          /boot/initrd.img-2.6.22-14-generic

title           Ubuntu 7.10, memtest86+
root            (hd0,0)
kernel          /boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title           Other operating systems:
root

# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title           Windows XP
map             (hd3) (hd0)
map             (hd0) (hd3)
root            (hd3,0)
makeactive
chainloader     +1</pre>
<h3>Le piège</h3>
<p>Si vous avez été attentif, vous avez vu le piège :<br />
Dans GRUB, le linux est vu comme le premier disque : hd0. C&#8217;est vrai, à condition de se dire que le BIOS boote (donc détecte ?) d&#8217;abord le SATA (donc il compte d&#8217;abord les SATA et le SAS est vu alors en 4è).<br />
=> C&#8217;est sur cette info que se base GRUB.</p>
<p>Par contre, le disque contenant vraiment l&#8217;OS Linux est sd<strong>B</strong>, donc le deuxième O_o<br />
=> Ce qui veut dire que Ubuntu redétecte l&#8217;ordre des disques à sa manière ensuite (disons que je le vois comme ça, tout au moins <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>De même pour le Windows, c&#8217;est sd<strong>A</strong> alors qu&#8217;il est vu par le BIOS en dernier (4è => hd3 dans GRUB).</p>
<p>Enfin, piège ultime, les lignes &laquo;&nbsp;map&nbsp;&raquo; qui n&#8217;étaient pas là au départ.<br />
Windows ne tolère de booter que s&#8217;il est &laquo;&nbsp;le premier disque&nbsp;&raquo; &#8211; ce qui ne veut rien dire et est une limitation complètement débile. Toujours est-il que là, il est vu à un moment donné comme 4è et sans vous le dire, ce con de NTLOADER ne part pas (et ne vous dit rien). GRUB vous dit que ça merdoit puis vous ramène au menu de boot.<br />
<strong>La commande &laquo;&nbsp;map&nbsp;&raquo; sert à modifier virtuellement l&#8217;ordre des disques</strong>. Ca suffit à blouser Windows. Attention le &laquo;&nbsp;root&nbsp;&raquo; reste sur hd3 alors qu&#8217;on a inversé les disques, c&#8217;est pas dynamique à ce niveau là.</p>
<p><strong>=> Le bilan après installation Ubuntu, c&#8217;est qu&#8217;aucun des menus ne menait à rien&#8230;. il a fallu changer la conf GRUB à la volée pour récupérer le linux, tester les paramètres pour booter le windows et enfin écrire la bonne conf dans <code>/boot/grub/menu.lst</code></strong></p>
<h3>Remarque sur les modifs à la volée de GRUB lors du boot</h3>
<p>Si GRUB démarre après une install, mais qu&#8217;aucun menu ne vous démarre un OS (ils sont simplement listés), n&#8217;oubliez pas que vous avez la touche &#8216;e&#8217; pour éditer une des lignes du menu de choix du boot. Les raccourcis claviers sont expliqués. Vous pourrez donc choisir un <code>root (hdtruc,bidule)</code> qui va bien.<br />
Si vous avez bien en tête la conf en terme de /dev/sdX et l&#8217;ordre des disques vu par le BIOS, vous devriez pouvoir faire booter n&#8217;importe quoi. Une fois sous le linux qui héberge le fichier de conf de GRUB, vous reportez vos modifs et c&#8217;est fini.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/03/29/grub-avec-un-disque-sas-des-sata-et-un-bios-un-peu-pourri/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ressusciter de l&#8217;historique (Apache) pour Webalizer</title>
		<link>http://michauko.org/blog/2008/03/11/ressusciter-de-lhistorique-apache-pour-webalizer/</link>
		<comments>http://michauko.org/blog/2008/03/11/ressusciter-de-lhistorique-apache-pour-webalizer/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 20:06:31 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[flood]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[referrer]]></category>
		<category><![CDATA[statistiques]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[webalizer]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2008/03/11/ressusciter-de-lhistorique-apache-pour-webalizer/</guid>
		<description><![CDATA[Derrière ce titre qui veut tout et rien dire, un besoin réel. Récemment, sur un site web avec une audience non négligeable (sans être démentielle : 70 000 hits hebdo), j&#8217;ai eu à mettre en place un outil de statistiques vite fait bien fait. J&#8217;ai choisi webalizer car je connaissais et car ça se met [...]]]></description>
			<content:encoded><![CDATA[<p>Derrière ce titre qui veut tout et rien dire, un besoin réel.</p>
<p>Récemment, sur un site web avec une audience non négligeable (sans être démentielle : 70 000 hits hebdo), j&#8217;ai eu à mettre en place un outil de statistiques vite fait bien fait. J&#8217;ai choisi <a href="http://www.webalizer.org/">webalizer</a> car je connaissais et car ça se met en place en 3 minutes et que ça sort mine de rien déjà pas mal d&#8217;infos (volume de hits, pays d&#8217;origine, mots-clefs, référant etc). Et c&#8217;est mieux que &laquo;&nbsp;pas de stats du tout&nbsp;&raquo; dans un premier temps.</p>
<p>Il y avait deux trucs tout bêtes dans l&#8217;histoire : j&#8217;avais un an de logs non &laquo;&nbsp;synthétisés&nbsp;&raquo; par webalizer. Il a donc fallu les faire passer dans webalizer pour rattraper l&#8217;historique. Et deuxièmement, c&#8217;est à ce moment là que j&#8217;ai vu que le <code>HostnameLookups</code> était à Off dans la conf <code>/etc/apache2/apache2.conf</code>. <strong>Donc les logs ne contenaient que les IP, pas les hostname</strong>. Donc pas de statistiques par pays dans Webalizer. Dommage pour une boîte internationale qui veut voir un peu où en est sa notoriété sur la planète&#8230;</p>
<p>J&#8217;ai donc remédié à tout ça. Cet article présente donc l&#8217;installation de la conf rapide de Webalizer (et Apache2 en conséquence) et donne une ligne de commande pour récupérer l&#8217;année d&#8217;historique (apache2 garde par défaut 52 fichiers de logs en rotation hebdo) et enfin, le plus marrant, mouliner sur les logs pour retrouver les <em>hostnames</em> correspondants aux IP&#8230; (en espérant que mon hébergeur ne me flingue pas en voyant le nombre de requête DNS que je crache en ce moment même <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Je lui ai posé la question, ne négligez pas ce point, ce serait bête de se faire des ennemis)<span id="more-111"></span></p>
<h3>Installation et conf Webalizer</h3>
<p>Sous Debian, un simple :</p>
<pre>aptitude install webalizer</pre>
<p>L&#8217;outil de conf pose 2/3 questions assez simples à répondre, comme votre nom de serveur web, le nom du fichier &laquo;&nbsp;logrotaté&nbsp;&raquo;, typiquement <code>/var/log/apache2/access.log.1</code> (et pas <code>/var/log/apache2/access.log</code>).<br />
De toute manière, on va repasser sur le fichier de conf tout de suite après l&#8217;install. Sachez que &laquo;&nbsp;webalizer&nbsp;&raquo; fait ses calculs via la <code>cron.daily</code>, au petit matin (par défaut sur Debian) quand vous dormez.<br />
Je mets 2/3 commentaires sur certains paramètres ; voyons ce que donne <code>egrep -v "^$|^#" /etc/webalizer/webalizer.conf</code> :</p>
<pre>LogFile         /var/log/apache2/access.log.1
OutputDir       /var/www/webalizer # A vous de voir. Pensez à un htaccess si besoin...
Incremental     yes
ReportTitle     Statistiques d'utilisation de mon serveur web
HostName        toto.com
TopReferrers    50
TopAgents       30
HideSite        *toto
HideSite        *toto.com
HideReferrer    www.toto.com/ # sinon vous passez votre temps à votre les mouvements interne au site
HideReferrer    toto.com/ # idem
HideReferrer    Direct Request
HideURL         *.gif
HideURL         *.GIF
HideURL         *.jpg
HideURL         *.JPG
HideURL         *.ra
HideURL         *.png
GroupURL        /cgi-bin/*
GroupAgent      MSIE
HideAgent       MSIE*
GroupAgent      Mozilla
HideAgent       Mozilla*
GroupAgent      Lynx
HideAgent       Lynx*
GroupAgent      Konqueror
HideAgent       Konqueror*
GroupAgent      Opera
HideAgent       Opera*
IgnoreSite      localhost # je tunnele l'accès à mon propre site et je suis un gros visiteur de mon propre site
IgnoreReferrer  localhost # idem
MangleAgents    4</pre>
<p>Dans la conf Apache2 <code>/etc/apache2/apache2.conf</code>, pensez à activer le paramètre <code>HostnameLookups</code> si vous voulez avoir un semblant de trace des pays rendant visite à votre site web (et rechargez Apache).</p>
<h3>Chargement de l&#8217;historique</h3>
<p>Il faut décompresser les logs Apache puis les importer un à un dans webalizer.Simple.<br />
En considérant que vous avez copié vos fichiers access.log.*.gz dans /tmp, vous faites ceci :</p>
<pre>for i in access*gz
do
        gunzip $i
done</pre>
<p>Et ensuite, lancement de l&#8217;import :</p>
<pre>for i in `./seq_reverse.py`
do
        webalizer access.log.$i
done</pre>
<p>Je ne sais plus si on peut faire un <code>seq</code> sortant les chiffres de 1 à 52 dans l&#8217;ordre inverse, <a href='http://michauko.org/blog/wp-content/uploads/2008/03/seq_reverse.py' title='seq -r ça n’existe pas ?'>alors j&#8217;ai pondu un script python pour le faire</a>.</p>
<p>A la fin, si votre répertoire <code>/var/www/webalizer</code> est blindé de fichiers, c&#8217;est bon. Vous pouvez voir vos stats sur l&#8217;année écoulée.</p>
<h3>Retrouver les hostnames</h3>
<p>C&#8217;est la partie amusante (et bourrin). Si vous n&#8217;aviez pas les hostnames des IP visitant votre serveur web, vos logs Apache ressemblait à ça :</p>
<pre>86.x.y.190 - - [15/Mar/2007:06:25:25 +0100] "GET /favicon.ico HTTP/1.1" 200 2238 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2"</pre>
<p>Si vous aviez activé le lookup dans Apache, vos logs ressemblent partiellement à ce qu&#8217;il y a ci-dessus (pour les serveurs n&#8217;ayant pas de nom) et généralement, ils contiennent plutôt ça :</p>
<pre>truc.machin.com - - [02/Mar/2008:06:26:27 +0100] "GET / HTTP/1.1" 200 27488 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"</pre>
<p>L&#8217;idée est de retrouver les noms lorsque vous n&#8217;avez que les IP. J&#8217;ai écrit un script Python pour ça (excusez-moi, je débute en Python). <a href='http://michauko.org/blog/wp-content/uploads/2008/03/retrouve_hostname.py' title='Script Python pour retrouver les hostnames à partir des IP d’un log Apache2'>Script Python pour retrouver les hostnames à partir des IP d’un log Apache2</a></p>
<p>Et donc à la fin, vous envoyez la purée :</p>
<pre>for i in /tmp/access.log.*
do
        ./retrouve_hostname.py $i
done</pre>
<p>Attention, c&#8217;est bourrin, faites le sur un petit fichier d&#8217;abord. Le script vous génère un fichier <code>$i.new</code>, à vous de vider vos statistiques webalizer (<code>rm /var/www/webalizer/*</code>) ensuite et de relancer la moulinette d&#8217;import sur ces nouveaux fichiers.</p>
<p>walaaaa, c&#8217;est tout pour aujourd&#8217;hui.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/03/11/ressusciter-de-lhistorique-apache-pour-webalizer/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Exercice de jonglage avec des boîtes mails fermées</title>
		<link>http://michauko.org/blog/2008/01/25/exercice-de-jonglage-avec-des-boites-mails-fermees/</link>
		<comments>http://michauko.org/blog/2008/01/25/exercice-de-jonglage-avec-des-boites-mails-fermees/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 15:04:41 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[aliases]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[procmail]]></category>
		<category><![CDATA[recipient_canonical]]></category>
		<category><![CDATA[vacation]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2008/01/25/exercice-de-jonglage-avec-des-boites-mails-fermees/</guid>
		<description><![CDATA[Lorsque vous supprimez un compte Linux, vous supprimez sa boîte aux lettres avec. Vous avez plusieurs solutions pour continuer à gérer (ou non) les mails reçus à cette adresse. Cas 1 : vous ne faites rien et l&#8217;expéditeur est informé, mais pour un client par exemple, c&#8217;est un peu moisi comme réponse. Cas 2 : [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque vous supprimez un compte Linux, vous supprimez sa boîte aux lettres avec. Vous avez plusieurs solutions pour continuer à gérer (ou non) les mails reçus à cette adresse.</p>
<ul>Cas 1 : vous ne faites rien et l&#8217;expéditeur est informé, mais pour un client par exemple, c&#8217;est un peu moisi comme réponse.</ul>
<ul>Cas 2 : vous faites un alias silencieusement et le mail termine chez quelqu&#8217;un d&#8217;autre sans que l&#8217;expéditeur le sache. Ca peut être gênant &#8211; car l&#8217;adresse restera utilisée</ul>
<ul>Cas 3 : vous voulez informer l&#8217;expéditeur et néanmoins rediriger le mail quelque part</ul>
<p>Je vais décrire les cas n°2 et 3 dans cet article. En considérant que vous êtes sur une base postfix+procmail comme je le décris <a href="http://michauko.org/docs/debian_testing/">dans ma doc</a>.<span id="more-100"></span></p>
<h3>Hypothèses</h3>
<p>Considérons que le compte de Jean Bonnot (login jbonnot) doive être fermé et que ses mails doivent aller chez Jean Luclesmouches (login jluclesmouches). Considérons aussi que Mr Bonnot ait des alias mails : jbonnot@votre_serveur.fr et j_bonnot@votre_serveur.fr.</p>
<h3>Cas n°2</h3>
<p>Pour le 2è cas, le plus simple, c&#8217;est de faire un alias dans <code>"/etc/aliases/"</code> du type :</p>
<pre>jbonnot: jluclesmouches
j_bonnot: jluclesmouches</pre>
<p>Puis de lancer la commande <code>"newaliases"</code> ou <code>"postmap /etc/aliases"</code> pour regénérer la base des alias (fichier <code>"/etc/aliases.db"</code>).</p>
<h3>Cas n°3</h3>
<p>Pour le 3è cas, on peut utiliser le programme <code>"vacation"</code> (installez le paquet du même nom, aucune configuration à faire) et triturer la conf de Postfix comme suit.<br />
Dans <code>/etc/postfix/recipient_canonical</code>, ajoutez une ligne :</p>
<pre>jbonnot        jluclesmouches+jbonnot
j.bonnot        jluclesmouches+jbonnot</pre>
<p>Ensuite, il faut là aussi regénérer la base de données issue de ce fichier, via la commande <code>"cd /etc/postfix ; postmap recipient_canonical"</code> pour obtenir un fichier <code>recipient_canonical.db</code>.</p>
<p>Enfin, dans votre fichier <code>/etc/postfix/main.cf</code>, veillez à avoir la ligne suivante :</p>
<pre>recipient_canonical_maps = hash:/etc/postfix/recipient_canonical</pre>
<p>Jusqu&#8217;ici, un e-mail à destination de Jean Bonnot sera renvoyé par le serveur à destination de Jean Luclesmouches en réécrivant le champ <code>"Delivered-To"</code> dans l&#8217;en-tête du mail afin de contenir <code>"Delivered-To: jluclesmouches+jbonnot@blabla.com"</code>. Ca permettra à J Luclesmouches (qui a manifestement du temps à revendre) de trier ses mails en entrées en se basant sur ce champ.</p>
<p>Reste à modifier le fichier <code>.procmailrc</code> de Mr Luclesmouches, en ajoutant par exemple :</p>
<pre>:0c
* ^Delivered-To: jluclesmouches\+jbonnot@ateme
| vacation -a j_bonnot -a jbonnot -f ~/.vacation_jbonnot.db -m ~/.vacation_jbonnot.msg jluclesmouches</pre>
<p>(&#8216;tention, il y a 3 lignes dans le code précédent, la dernière allant de &laquo;&nbsp;| vacation&nbsp;&raquo; à &laquo;&nbsp;jluclesmouches&nbsp;&raquo;)</p>
<p>Enfin, créer le message d&#8217;absence (pour &laquo;&nbsp;vacation&nbsp;&raquo;) de feu Mr Bonnot. C&#8217;est le fichier <code>.vacation_jbonnot.msg</code> dans le &laquo;&nbsp;home directory&nbsp;&raquo; de Jean Luclesmouches. Il contiendra par exemple :</p>
<pre>From: j_bonnot@votre_serveur.fr
Subject: Re: $SUBJECT
Precedence: Bulk

Mr Jean Bonnot est mort, contactez Mr Jean Luclesmouches à l'adresse blablabla</pre>
<p>Contenu à adapter suivant que vous utilisez un simple répondeur sans conserver le mail (directive <code>:0</code> dans le <code>.procmailrc</code>) ou que vous conservez une copie du mail chez le destinataire (directive <code>:0c</code> dans le <code>.procmailrc</code>).</p>
<p>Testez et ça devrait rouler.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/01/25/exercice-de-jonglage-avec-des-boites-mails-fermees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASCII-art : le paquet inutile du jour</title>
		<link>http://michauko.org/blog/2007/12/20/ascii-art-le-paquet-inutile-du-jour/</link>
		<comments>http://michauko.org/blog/2007/12/20/ascii-art-le-paquet-inutile-du-jour/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 10:14:50 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[ascii-art]]></category>
		<category><![CDATA[bb]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2007/12/20/ascii-art-le-paquet-inutile-du-jour/</guid>
		<description><![CDATA[Ouvrez un terminal en grand. Tapez : apt-get install bb bb Puis perdez 10 minutes de votre temps, mais bon, c&#8217;est impressionnant. Merci à Baptiste de m&#8217;avoir montré ce paquet, au hasard d&#8217;une discussion à la machine à café.]]></description>
			<content:encoded><![CDATA[<p>Ouvrez un terminal en grand.<br />
Tapez :</p>
<pre>apt-get install bb
bb</pre>
<p>Puis perdez 10 minutes de votre temps, mais bon, c&#8217;est impressionnant.</p>
<p>Merci à Baptiste de m&#8217;avoir montré ce paquet, au hasard d&#8217;une discussion à la machine à café.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2007/12/20/ascii-art-le-paquet-inutile-du-jour/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>winmail.dat : kek&#8217; j&#8217;en fais ? je le décode bien sûr</title>
		<link>http://michauko.org/blog/2007/12/05/winmaildat-kek-jen-fais-je-le-decode-bien-sur/</link>
		<comments>http://michauko.org/blog/2007/12/05/winmaildat-kek-jen-fais-je-le-decode-bien-sur/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 15:04:46 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[bureautique]]></category>
		<category><![CDATA[coup de gueule]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[ligne de commande]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[TNEF]]></category>
		<category><![CDATA[winmail.dat]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2007/12/05/winmaildat-kek-jen-fais-je-le-decode-bien-sur/</guid>
		<description><![CDATA[Parfois (si quelqu&#8217;un sait me dire quand, je suis preneur), une pièce jointe (ou un ensemble) envoyée à partir d&#8217;un client mail Migrosoft arrive sous forme d&#8217;un fichier &#171;&#160;winmail.dat&#160;&#187;. Et on ne sait pas quoi en faire. Et ça me gave ce p_[4!n de problème. En cherchant un peu (vue la demande urgente d'un collègue [...]]]></description>
			<content:encoded><![CDATA[<p>Parfois (si quelqu&#8217;un sait me dire quand, je suis preneur), une pièce jointe (ou un ensemble) envoyée à partir d&#8217;un client mail Migrosoft arrive sous forme d&#8217;un fichier &laquo;&nbsp;winmail.dat&nbsp;&raquo;. Et on ne sait pas quoi en faire. Et ça me gave ce p_[4!n de problème.<br />
En cherchant un peu (vue la demande urgente d'un collègue près à me baffer), j'ai trouvé comment les décoder, ça peut vous servir.<span id="more-90"></span></p>
<p>Avec la commande <code>"file"</code>, vous découvrirez ce qu'est le format TNEF :</p>
<pre>nunusk:~# file /tmp/winmail.dat
/tmp/winmail.dat: Transport Neutral Encapsulation Format</pre>
<p>Ca semble être une bouse sortie de chez Grosoft.<br />
De là, vous ferez à tout hasard une recherche Goog... avant ça : apt-cache pour voir si un outil magique n'existerait pas :</p>
<pre>nunusk:~# apt-cache search tnef
libconvert-tnef-perl - Perl module to read TNEF files
libytnef0 - improved decoder for application/ms-tnef attachments
libytnef0-dev - improved decoder for application/ms-tnef attachments
ytnef - improved decoder for application/ms-tnef attachments
ktnef - KDE TNEF viewer
libktnef1 - Library for handling KTNEF email attachments
libktnef1-dev - KTNEF handler library [development]
mailscanner &#8211; email virus scanner and spam tagger
tnef &#8211; Tool to unpack MIME application/ms-tnef attachments</pre>
<p>Ô joie ! J'ai tenté ma chance avec un <code>apt-get install tnef</code> immédiatement suivi d'un <code>man tnef</code> immédiatement suivi d'un <code>tnef -f /tmp/winmail.dat -C . ; ls -ltr</code> et...... un fichier jpg est sorti. Wouaaaaa.</p>
<p>Au moins, je saurai comment régler ces problèmes unitairement, en attendant de comprendre vraiment le problème.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2007/12/05/winmaildat-kek-jen-fais-je-le-decode-bien-sur/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

