<?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</title>
	<atom:link href="http://michauko.org/blog/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>Tue, 29 Nov 2011 11:45:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ralentir le débit de postfix pour wanadoo/orange</title>
		<link>http://michauko.org/blog/2011/11/29/ralentir-le-debit-de-postfix-pour-wanadooorange/</link>
		<comments>http://michauko.org/blog/2011/11/29/ralentir-le-debit-de-postfix-pour-wanadooorange/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 11:45:03 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[check_postqueue.sh]]></category>
		<category><![CDATA[master.cf]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[orange]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[transport]]></category>
		<category><![CDATA[wanadoo]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1302</guid>
		<description><![CDATA[Si vous avez un serveur d&#8217;envoi de mails (je ne parle pas d&#8217;être un spammeur) et beaucoup d&#8217;abonnés chez Wanadoo et Orange, vous risquez fort le rejet temporaire de votre serveur si le débit d&#8217;envoi est trop fort. C&#8217;est ce qui m&#8217;est arrivé et hop, 5000 mails entassés dans la file de postfix. On peut [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous avez un serveur d&#8217;envoi de mails (je ne parle pas d&#8217;être un spammeur) et beaucoup d&#8217;abonnés chez Wanadoo et Orange, vous risquez fort le rejet temporaire de votre serveur si le débit d&#8217;envoi est trop fort.<br />
C&#8217;est ce qui m&#8217;est arrivé et hop, 5000 mails entassés dans la file de postfix.</p>
<p>On peut donc créer une file spéciale dans le master.cf de postfix et une règle de transport pour ces domaines, avec un débit réduit. Du moment où j&#8217;ai rechargé la configuration postfix et relancer le traitement de la file, magie, en 1 heure, les 5000 mails étaient distribués.</p>
<p>Pour ce faire, j&#8217;ai utilisé les documentations suivantes et adapté au contexte &laquo;&nbsp;configuration postfix définie dans MySQL&nbsp;&raquo;, comme expliqué dans <a href="http://michauko.org/blog/?s=postfix+mysql" title="mes articles précédents" target="_blank">mes articles précédents</a>, toujours d&#8217;actualité.<span id="more-1302"></span></p>
<ul>
<li><a href="http://linuxnet.ca/postfix/dedicated_transport.html" target="_blank">http://linuxnet.ca/postfix/dedicated_transport.html</a></li>
<li><a href="http://www.zapoyok.info/2011/01/01/orangewanadoo-et-%C2%AB-too-many-connections-slow-down-ofr004_104-104-%C2%BB/" target="_blank">http://www.zapoyok.info/2011/01/01/orangewanadoo-et-%C2%AB-too-many-connections-slow-down-ofr004_104-104-%C2%BB/</a></li>
</ul>
<h2>Dans master.cf</h2>
<blockquote><p>slow    unix    &#8211;       &#8211;       n       &#8211;       5       smtp<br />
  -o syslog_name=postfix-slow<br />
  -o smtp_destination_concurrency_limit=3<br />
  -o slow_destination_rate_delay=1
</p></blockquote>
<h2>Dans main.cf</h2>
<blockquote><p>slow_destination_recipient_limit = 20<br />
slow_destination_concurrency_limit = 2
</p></blockquote>
<h2>Dans la table &laquo;&nbsp;transport&nbsp;&raquo; niveau MySQL</h2>
<p>Sur une conf &laquo;&nbsp;non SQL&nbsp;&raquo;, il suffirait de jouer avec le fichier de transport, sans oublier le &laquo;&nbsp;postmap&nbsp;&raquo; qui va bien.<br />
Dans mon cas, le fichier de transport est défini comme ceci : <code>transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf</code>.<br />
Donc, pour ajouter une route particulière pour ces 4 domaines, on ajoute en base :</p>
<blockquote><p>INSERT INTO `transport` (domain, transport)<br />
VALUES (&#8216;wanadoo.fr&#8217;,'slow&#8217;),<br />
VALUES (&#8216;wanadoo.com&#8217;,'slow&#8217;),<br />
VALUES (&#8216;orange.fr&#8217;,'slow&#8217;),<br />
VALUES (&#8216;orange.com&#8217;,'slow&#8217;)<br />
;</p></blockquote>
<p>Enfin, on relance postfix et la file d&#8217;attente avec ses X messages bloqués avec un <code>postqueue -f</code>.</p>
<h2>Monitoring de la file d&#8217;attente sous Nagios</h2>
<p>Du coup, j&#8217;ai trouvé qu&#8217;il me manquait une surveillance de la file d&#8217;attente &laquo;&nbsp;postqueue&nbsp;&raquo; d&#8217;un serveur via Nagios. Je signale simplement ce script (<a href="http://exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postqueue-2Esh/details" title="http://exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postqueue-2Esh/details" target="_blank">http://exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postqueue-2Esh/details</a>)<br />
Il semble faire le boulot simplement.<br />
A rapprocher de <a href="http://michauko.org/blog/2010/01/06/nrpe-monitorer-des-linux-avec-nagios/" target="_blank">ce document</a> si l&#8217;ajout d&#8217;un contrôle via NRPE ne vous est pas familier.</p>
<p>Et voilà.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/11/29/ralentir-le-debit-de-postfix-pour-wanadooorange/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CIFS VFS: No response for cmd 50 mid xxx</title>
		<link>http://michauko.org/blog/2011/10/18/cifs-vfs-no-response-for-cmd-50-mid-xxx/</link>
		<comments>http://michauko.org/blog/2011/10/18/cifs-vfs-no-response-for-cmd-50-mid-xxx/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 13:47:04 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[CIFS]]></category>
		<category><![CDATA[CIFS VFS]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[OplockEnabled]]></category>
		<category><![CDATA[samba]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1296</guid>
		<description><![CDATA[Sur une machine Debian Squeeze virtualisée, kernel 2.6.28, depuis quelques jours, une tonne de messages type Oct 18 00:20:59 mamachine kernel: [1870080.158744] CIFS VFS: No response for cmd 50 mid 10251. Au-delà des messages, toutes les manipulations de fichiers sur des partages Samba fonctionnaient curieusement : transferts de fichiers interrompus, créations de répertoires quand ça [...]]]></description>
			<content:encoded><![CDATA[<p>Sur une machine Debian Squeeze virtualisée, kernel 2.6.28, depuis quelques jours, une tonne de messages type <code>Oct 18 00:20:59 mamachine kernel: [1870080.158744]  CIFS VFS: No response for cmd 50 mid 10251</code>. Au-delà des messages, toutes les manipulations de fichiers sur des partages Samba fonctionnaient curieusement : transferts de fichiers interrompus, créations de répertoires quand ça voulait etc.</p>
<p>Sur Internet, on trouve de la prose indiquant que ça peut se régler en désactivant le &laquo;&nbsp;Opportunistic Locking&nbsp;&raquo;, concrètement en faisant un <code>echo 0 > /proc/fs/cifs/OplockEnabled</code> bien bourrin, moyennant une vague perte de performance (je n&#8217;ai pas mesuré).<br />
Ca n&#8217;aura pas suffit.</p>
<p>Comme j&#8217;ai vu passer, il me semble, des mises à jour samba il y a peu de temps, ça sentait la modif récente (chez MS, ou pas et répercutée dans Samba) et le kernel un peu trop vieux pour que tout ça marche bien. Résultat, après une mise à jour du noyau en 2.6.39 (backport), en mettant tout de même le &laquo;&nbsp;OplockEnabled&nbsp;&raquo; à 0 (j&#8217;avoue que je n&#8217;ai pas testé sans), le problème a disparu.</p>
<p>Un copain me souffle de mettre <code>fs.cifs.OplockEnabled=0</code> dans <code>/etc/sysctl.d/local.conf</code> plutôt que l&#8217;éternel <code>echo 0 > /proc...</code> dans le <code>rc.local</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/10/18/cifs-vfs-no-response-for-cmd-50-mid-xxx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freebox V6 1.1.0 &#8211; téléphonie &#8211; attention ça galère, mais y&#8217;a une solution</title>
		<link>http://michauko.org/blog/2011/08/23/freebox-v6-1-1-0-telephonie-attention-ca-galere-mais-ya-une-solution/</link>
		<comments>http://michauko.org/blog/2011/08/23/freebox-v6-1-1-0-telephonie-attention-ca-galere-mais-ya-une-solution/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 20:10:09 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[coup de gueule]]></category>
		<category><![CDATA[hors sujet]]></category>
		<category><![CDATA[DECT]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[freebox]]></category>
		<category><![CDATA[freebox v6]]></category>
		<category><![CDATA[téléphonie]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1266</guid>
		<description><![CDATA[Ce matin, nouvelle mise à jour de la freebox V6. Au programme officiel, plein de corrections sur la téléphonie (LE truc qui intéresse un cabinet médical dont je m&#8217;occupe). Après les déboires pas possibles de la téléphonie début 2011 (j&#8217;aurais bien tué un développeur ou 2), c&#8217;était à peu près stable depuis plusieurs mois. Avec [...]]]></description>
			<content:encoded><![CDATA[<p>Ce matin, nouvelle mise à jour de la freebox V6. Au programme officiel, plein de corrections sur la téléphonie (LE truc qui intéresse un cabinet médical dont je m&#8217;occupe). Après les déboires pas possibles de la téléphonie début 2011 (j&#8217;aurais bien tué un développeur ou 2), c&#8217;était à peu près stable depuis plusieurs mois.<br />
Avec un répondeur sur la prise téléphonie derrière la freebox et 2 DECT finalement &laquo;&nbsp;associés&nbsp;&raquo; à la freebox et pas à leur base d&#8217;origine, filaire, ça marchait à peu près. Il ne fallait que composer 3 fois les numéros pour que ça passe.</p>
<p>Ce matin, mise à jour donc, en priant (mais j&#8217;aurais dû attendre, comme d&#8217;hab). Et là : tu reçois les coups de téléphones, mais quand tu composes, pas de sonnerie, mais ça sonne chez le destinataire et dès qu&#8217;il décroche ça coupe&#8230;.<br />
Une crise de nerfs plus tard + rererereboot de cette bouse + &laquo;&nbsp;désassociation&nbsp;&raquo; + réassociation + test de la base DECT filaire, pas mieux.<br />
Donc maintenant, j&#8217;ai compris, je me rue vers <a href="http://bugs.freeplayer.org/task/7528" target="_blank">leur système de bugtracking et hop</a>, un mec a loggué le même incident et un type a trouvé une solution qui n&#8217;explique rien mais qui marche, confirmé par plusieurs dont moi.</p>
<p>Il faut donc activer (si pas déjà fait) votre répondeur et autres fonctions depuis l&#8217;interface de gestion &laquo;&nbsp;www.free.fr / mon compte&nbsp;&raquo;, sauvegarder, désactiver tout ça et sauvegarder à nouveau. Inutile, pas logique, débile, mais ça marche.<br />
Comme je disais sur le site des bugs : &laquo;&nbsp;Bon c&#8217;est super hein, je peux enlever des dB machin truc à ma freebox et me pinouiller de qqs ko/s, mais pour téléphoner, faut aller sur ce site pour savoir faire. clap clap clap.&nbsp;&raquo;</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/08/23/freebox-v6-1-1-0-telephonie-attention-ca-galere-mais-ya-une-solution/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Migration de Firefox vers Chrome, des années après sa sortie&#8230;</title>
		<link>http://michauko.org/blog/2011/08/22/migration-de-firefox-vers-chrome-des-annees-apres-sa-sortie/</link>
		<comments>http://michauko.org/blog/2011/08/22/migration-de-firefox-vers-chrome-des-annees-apres-sa-sortie/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 15:41:28 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[firegestures]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[tabmix plus]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1258</guid>
		<description><![CDATA[Et voilà, ce matin ça m&#8217;a pris comme une envie de&#8230; enfin, d&#8217;un coup. Firefox 6 m&#8217;ayant largement gonflé à mon retour de vacances, j&#8217;ai tenté la migration vers Chrome. Je consigne ici quelques remarques qui rassureront ceux qui hésitent depuis longtemps. Si à l&#8217;époque de la sortie de Chrome, il n&#8217;y avait rien pour [...]]]></description>
			<content:encoded><![CDATA[<p>Et voilà, ce matin ça m&#8217;a pris comme une envie de&#8230; enfin, d&#8217;un coup. Firefox 6 m&#8217;ayant largement gonflé à mon retour de vacances, j&#8217;ai tenté la migration vers Chrome. Je consigne ici quelques remarques qui rassureront ceux qui hésitent depuis longtemps. Si à l&#8217;époque de la sortie de Chrome, il n&#8217;y avait rien pour l&#8217;arranger, les choses ont changé depuis le temps.</p>
<p>Avant de migrer, il y a 2 questions à se poser (à mon avis) :<br />
- quel intérêt ? nouvelles fonctions ? plus beau ? aimer le changement ?<br />
- y&#8217;a-t-il toutes les fonctions / mes plugins ?</p>
<p>Pour la première question<span id="more-1258"></span>, entre le fait que Mozilla sorte ces dernières semaines une version plus vite que certains ne changent de slip et que la version 6 se viande trop souvent quoi que j&#8217;y fasse (réinstall, vider tout ce que tu peux, en version portable ou pas, sur différents OS, en supprimant des plugins&#8230;) et que la réputation de Chrome, pour la rapidité, semble faite, c&#8217;était l&#8217;occasion de tester. Restait donc à trouver les plugins &laquo;&nbsp;manquants&nbsp;&raquo; au logiciel de base, à coup sûr le genre FireGestures, TabMix Plus etc&#8230;</p>
<p><em>Je propose d&#8217;ailleurs à Mozilla de sauter tout de suite à la version &laquo;&nbsp;15 pro&nbsp;&raquo;. &laquo;&nbsp;firefox 15 pro&nbsp;&raquo;, ça serait tout de suite mieux que tous les autres logiciels, puisque le numéro est plus gros. Et c&#8217;est pro.<br />
</em></p>
<p>Bon allez, on abrège :</p>
<h1>Premiers pas</h1>
<h2>Reprise de données</h2>
<p>Mes données firefox sont synchronisées par le logiciel Firefox lui-même et j&#8217;utilise principalement (je vais pas m&#8217;étendre là-dessus) un firefox &#8211; 5, donc &#8211; portable (et crypté).<br />
Première mission : reprendre tout ça. Chrome reprend tout (mots de passe, historique etc) d&#8217;une version *installée* et *sans mot de passe principal*. J&#8217;ai donc dû installer un firefox &laquo;&nbsp;normalement&nbsp;&raquo;, écraser le contenu du profil vierge (sous Windows, dans <code>C:\Docs&#038;Settings\moi\Mozilla....\profile....\</code>) en faisant en plus sauter le mot de passe principal.<br />
La reprise fonctionne alors très bien.<br />
Penser à effacer cette copie de profile devenue inutile.</p>
<h2>Proxy</h2>
<p>Au boulot, il y a le proxy officiel, et mon proxy au bout d&#8217;un tunnel SSH. Dans les options de configuration, on s&#8217;aperçoit que Chrome ne propose que le proxy paramétré dans le système (IE) ! Sans blague ???? quel choix débile : si c&#8217;est sensé faciliter le fonctionnement pour un boulet lambda qui installe Chrome entreprise, bah il faut blâmer les administrateurs de ne pas l&#8217;autoriser avec packaging à la clef. Sinon, il faut les blâmer de laisser faire. Et dernier choix, le particulier qui utilise un proxy ??? ça devient rare, ou alors il est au courant. Il reprendra sa conf.<br />
Bref, devant ce merveilleux choix, Google m&#8217;expliqua que je devais mettre &#8211;proxy-server=mon.proxy:mon_port dans la ligne de commande. Pratique et hautement configurable. Enfin bon, ça me suffit et je suis sûr qu&#8217;il y a un plugin pour améliorer ça <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Divers, impression, synchro multi-poste</h2>
<p>Bon ensuite c&#8217;est parti ça marche, je note rapidement 2 choses : on peut &laquo;&nbsp;épingler&nbsp;&raquo; les sites, comme dans les firefox récents et il y a une fonction pour imprimer sur une imprimante d&#8217;un autre PC avec Chrome. Il faudra que j&#8217;essaye ça : sortir un papier trouvé chez soi pour le boulot et réciproquement. Pourquoi pas.<br />
Les onglets épinglés reviennent lorsqu&#8217;on relance. Pas les autres. On peut faire ctrl-shift-T pour rappeler tous les onglets fermés, mais il va falloir vite trouver TabMix+ ou équivalent. Il faut dire que j&#8217;avais un peu ignoré l&#8217;option qui justement restaure les onglets après fermeture. Ca fait déjà une bonne partie de ce dont j&#8217;ai besoin dans TMP.<br />
Ayant un compte Google et utilisant un bon panel de leurs applications, la synchro de mes paramètres (mdp etc) est tombée sous le sens. Ca marche bien et chose terrible : en installant un chrome &laquo;&nbsp;normal&nbsp;&raquo; (pas portable) sur un autre PC à moi, la synchro aura même redescendu les plugins ! Pas mal.</p>
<p>Bon bah voilà, reste à affiner avec des plug-ins.<br />
Ah, et les raccourcis clavier sont les mêmes, globalement.</p>
<h1>Equivalence des plugins</h1>
<h2>FireGestures => <a href="https://chrome.google.com/webstore/detail/aeaoofnhgocdbnbeljkmbjdmhbcokfdb?hl=fr" title="Mouse Stroke" target="_blank">Mouse Stroke</a></h2>
<p>Pareil, voire mieux (paramétrable par application ?)<br />
Les raccourcis de base sont les mêmes <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h2><a href="https://chrome.google.com/webstore/detail/cfhdojbkjhnklbpkdaibdccddilifddb" title="AdBlock+" target="_blank">Adblock+ => inchangé</a></h2>
<p>Ne pas confondre avec la palanquée d&#8217;autres outils qui ont presque la même icone.</p>
<h2>Fox To Phone => <a href="https://chrome.google.com/webstore/detail/oadboiipflhobonjjffjbfekfjcgkhco?hl=fr" title="Chrome To Phone" target="_blank">Chrome To Phone</a></h2>
<p>Pareil. Je crois que le plugin vient de Chrome au départ, de toute manière.</p>
<h2><a href="http://www.garmin.com/products/communicator/" title="Garmin communicator => inchangé&nbsp;&raquo; target=&nbsp;&raquo;_blank&nbsp;&raquo;>Garmin Communicator => inchangé</a></h2>
<p>OK, ça semble être fonctionnel mais je n&#8217;ai pas mon GPS sur moi.</p>
<h2>gTranslate => <a href="https://chrome.google.com/webstore/detail/obgoiaeapddkeekbocomnjlckbbfapmk" title="Auto-Translate" target="_blank">Auto-Translate</a></h2>
<p>Pareil en mieux.</p>
<h2>Google + + (plus plus) => <a href="https://chrome.google.com/webstore/detail/aamklbolfkledofgpbdllkangemkfdnb?hl=fr" title="Publish Sync" target="_blank" class="broken_link">Publish Sync</a></h2>
<p>Google++ génial sur le papier (publications FB/G+/Twitter depuis l&#8217;un des 3, vers les 3) n&#8217;a jamais fonctionné pour moi. L&#8217;extension Publish Sync, uniquement pour Chrome, était donc une belle occasion. Ben ça marche, nickel.</p>
<h2>NZBdStatus => <a href="https://chrome.google.com/webstore/detail/okphadhbbjadcifjplhifajfacbkkbod#" title="SABConnect++" target="_blank">SABConnect++</a></h2>
<p>Ca marche et c&#8217;est même mieux que le NZBdStatus que j&#8217;utilisais sur Firefox.</p>
<h2>ReadItLater => une page web</h2>
<p>Avec Chrome,  ça propose une page web. Finalement c&#8217;est mieux que le bouton que j&#8217;avais sur Firefox.</p>
<h2>TabMix + => <a href="https://chrome.google.com/webstore/detail/nmidkjogcjnnlfimjcedenagjfacpobb?hl=fr" title="FreshStart" target="_blank">FreshStart </a>/ <a href="https://chrome.google.com/webstore/detail/bbcnbpafconjjigibnhbfmmgdbbkcjfi?hl=fr" title="Session Manager" target="_blank">Session Manager</a> ?</h2>
<p>Gros sujets bloquant plein de personnes (dont moi).<br />
Je n&#8217;utilise que :<br />
- la réouverture de la session, même en cas de crash<br />
- la sauvegarde de quelques ensembles d&#8217;onglets pour faciliter l&#8217;accès simultané à un paquet donné de sites.<br />
- la protection contre la fermeture / le changement d&#8217;url d&#8217;un onglet.<br />
Le premier point est disponible de base, sauf en cas de crash. Ca semble apporté par &laquo;&nbsp;FreshStart&nbsp;&raquo;, mais je n&#8217;ai pas encore réussi à planter le navigateur. On verra, donc. A ce propos, chaque onglet semble donner naissance à un processus système différent, ça limite peut-être la casse en cas de plantage d&#8217;un site.<br />
Le deuxième point vient avec FreshStart &#8211; j&#8217;avais trouvé Session Manager au départ. Ca ne faisait que ça. A voir si tout ça remonte via la synchro Google sur un autre PC&#8230;.<br />
Troisième et dernier point : rien trouvé. Je m&#8217;en passerai. Quand on ferme un onglet par erreur, on peut facilement le rouvrir.</p>
<p>Je ne dis rien sur les options de navigation : ouverture et placement des onglets car il y a longtemps que j&#8217;ai arrêté de bidouiller tout ça. Je m&#8217;adapte au logiciel. Avec chrome, ça ouvre un onglet juste à droite de l&#8217;onglet courant. Bon, soit.</p>
<h2>Easy Youtube Video Downloader => <a href="http://www.chromeextensions.org/music-videos-photos/fastesttube/" title="FastestTube" target="_blank">FastestTube</a></h2>
<p>Ca marche, point. Intégration pareil : une liste déroulante sous la vidéo.<br />
Je n&#8217;ai pas regardé d&#8217;outils multi-site (dailymotion &#038; co)</p>
<h2>FireBug => ?</h2>
<p>Rien vu vite fait, à part que le bouton droit sur un élément puis &laquo;&nbsp;Inspect&nbsp;&raquo; sort déjà pas mal de choses. Au pire, vu les rares fois où j&#8217;ai besoin de FireBug, je lancerai mon bon vieux &laquo;&nbsp;Firefox 27.2 pro limited edition&nbsp;&raquo;</p>
<h2>Nouveau : <a href="https://chrome.google.com/webstore/detail/khpcanbeojalbkpgpmjpdkjnkfcgfkhb?hl=fr" title="Chromium Wheel Smooth Scroller" target="_blank">Chromium Wheel Smooth Scoller</a></h2>
<p>Tombé dessus par hasard, c&#8217;est vrai que le scroll à la souris est bien plus fluide. J&#8217;adopte.</p>
<h2>Nouveau : <a href="https://chrome.google.com/webstore/detail/nlbjncdgjeocebhnmkbbbdekmmmcbfjd" title="Abonnement RSS" target="_blank">Abonnement RSS</h2>
<p>Ca rajoute l&#8217;icone lorsqu&#8217;un flux RSS est détecté sur une page, comme Firefox à une époque.</p>
<h2>Nouveau : <a href="https://chrome.google.com/webstore/detail/mmffncokckfccddfenhkhnllmlobdahm" title="FastestChrome" target="_blank">FastestChrome</a></h2>
<p>Sensé accélérer le chargement, précharger des pages, faire la cuisine etc. On me l&#8217;a recommandé, j&#8217;ai installé mais je verrai plus tard</p>
<p>Voilà pour ce tour d&#8217;horizon rapide. Yapuka ne pas être déçu maintenant.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/08/22/migration-de-firefox-vers-chrome-des-annees-apres-sa-sortie/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ampache, debian et le flash-pas-libre</title>
		<link>http://michauko.org/blog/2011/08/22/ampache-debian-et-le-flash-pas-libre/</link>
		<comments>http://michauko.org/blog/2011/08/22/ampache-debian-et-le-flash-pas-libre/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 13:02:57 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[ampache]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1256</guid>
		<description><![CDATA[Le lecteur flash incorporé à Ampache n&#8217;est pas dans le paquet officiel de Debian, pas compatible avec le DFSG. Bref. Pour l&#8217;ajouter, dézipper le contenu du sous-répertoire xspf jukebox de ce fichier ZIP (http://lacymorrow.com/projects/jukebox/source.zip) dans /usr/share/ampache/www/modules/flash et le lecteur flash incorporé fonctionnera.]]></description>
			<content:encoded><![CDATA[<p>Le lecteur flash incorporé à Ampache n&#8217;est pas dans le paquet officiel de Debian, pas compatible avec le DFSG. Bref.<br />
Pour l&#8217;ajouter, dézipper le contenu du sous-répertoire <code>xspf jukebox</code> de ce fichier ZIP (http://lacymorrow.com/projects/jukebox/source.zip) dans <code>/usr/share/ampache/www/modules/flash</code> et le lecteur flash incorporé fonctionnera.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/08/22/ampache-debian-et-le-flash-pas-libre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios et contrôle du nombre de processus d&#8217;un Windows</title>
		<link>http://michauko.org/blog/2011/08/19/nagios-et-controle-du-nombre-de-processus-dun-windows/</link>
		<comments>http://michauko.org/blog/2011/08/19/nagios-et-controle-du-nombre-de-processus-dun-windows/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 07:05:40 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[supervision]]></category>
		<category><![CDATA[check_nt]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[NSClient++]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1252</guid>
		<description><![CDATA[Truc bête en vitesse : comment contrôler le plus simplement possible le nombre de processus d&#8217;une machine windows depuis Nagios ? J&#8217;ai trouvé plein de scripts en SNMP, assez lourdingue à mettre en place, ça ne me plaisait pas. Puis en relisant la doc de la commande &#171;&#160;check_nt&#160;&#187; (nécessitant un client NSClient++ en face), je [...]]]></description>
			<content:encoded><![CDATA[<p>Truc bête en vitesse : comment contrôler le plus simplement possible le nombre de processus d&#8217;une machine windows depuis Nagios ?<br />
J&#8217;ai trouvé plein de scripts en SNMP, assez lourdingue à mettre en place, ça ne me plaisait pas.<br />
Puis en relisant la doc de la commande &laquo;&nbsp;check_nt&nbsp;&raquo; (nécessitant un client NSClient++ en face), je suis tombé sur l&#8217;option &laquo;&nbsp;COUNTER&nbsp;&raquo;. Alors voilà, à conserver dans un coin de tête :<br />
<code>/usr/lib/nagios/plugins/check_nt -H srv_windows -v COUNTER -p 12489 -l "\\Objects\Processes" -w 120 -c 150</code></p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/08/19/nagios-et-controle-du-nombre-de-processus-dun-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>scp et SSH en PHP</title>
		<link>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/</link>
		<comments>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 11:36:49 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh2.so]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1244</guid>
		<description><![CDATA[Hop, J&#8217;ai eu besoin de faire un script un peu évolué pour jouer avec une base Oracle et des fichiers à ramener depuis un serveur distant. Bref, j&#8217;ai pensé au PHP pour faire un truc assez fin, mêlant Oracle et des transferts de fichiers en &#171;&#160;scp&#160;&#187;. Seule difficulté, installer le module SSH pour PHP. Ce [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,<br />
J&#8217;ai eu besoin de faire un script un peu évolué pour jouer avec une base Oracle et des fichiers à ramener depuis un serveur distant.<br />
Bref, j&#8217;ai pensé au PHP pour faire un truc assez fin, mêlant Oracle et des transferts de fichiers en &laquo;&nbsp;scp&nbsp;&raquo;.</p>
<p>Seule difficulté, installer le module SSH pour PHP. Ce que je décris ici.<br />
Ensuite, les bouts de codes exemple sont sur <a href="http://www.php.net/manual/fr/book.ssh2.php" target="_blank">la doc de PHP</a>.</p>
<h1>Côté serveur Debian</h1>
<p>J&#8217;étais parti de l&#8217;installation PECL directement, ça plante, il manquait des petits bouts côté Debian<span id="more-1244"></span>. Je montre pour l&#8217;exemple :</p>
<pre>srv:~# pecl install ssh2 "channel://pecl.php.net/ssh2-0.11.2"
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.11.2, stability "beta", use "channel://pecl.php.net/ssh2-0.11.2" to install
downloading ssh2-0.11.2.tgz ...
Starting to download ssh2-0.11.2.tgz (22,740 bytes)
........done: 22,740 bytes
[...]
checking for ssh2 files in default path... not found
configure: error: The required libssh2 library was not found.  You can obtain that package from http://sourceforge.net/projects/libssh2/
ERROR: `/tmp/pear/temp/ssh2/configure --with-ssh2' failed
</pre>
<p>Donc, il faut d&#8217;abord installer tout ça :</p>
<pre>srv:~# apt-cache search libssh2
libnet-ssh2-perl - Perl module for the SSH 2 protocol
libssh2-1-dbg - SSH2 client-side library (debug package)
libssh2-1-dev - SSH2 client-side library (development headers)
libssh2-1 - SSH2 client-side library
libssh2-php - PHP Bindings for libssh2
python-libssh2 - Python binding for libssh2 library

srv:~# aptitude install libssh2-1-dev libssh2-php</pre>
<h1>Installation du module avec PECL</h1>
<p>On peut donc enfin installer le module :</p>
<pre>srv:~# pecl install ssh2 "channel://pecl.php.net/ssh2-0.11.2"
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.11.2, stability "beta", use "channel://pecl.php.net/ssh2-0.11.2" to install
[...]
Build process completed successfully
Installing '/usr/lib/php5/20090626+lfs/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.11.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
aladdin:~# grep extension /etc/php5 -r
/etc/php5/conf.d/gd.ini:extension=gd.so
/etc/php5/conf.d/ssh2.ini:extension=ssh2.so
/etc/php5/conf.d/snmp.ini:extension=snmp.so</pre>
<p>L&#8217;installation se charge toute seule d&#8217;activer l&#8217;extension ssh2.so dans les fichiers de conf PHP.</p>
<h1>Exemple de code d&#8217;un transfert</h1>
<pre>define ("SSH_KEY","/path/to/.ssh/id_dsa");
define ("SSH_FINGERPRINT","BXXXXXXXXXXXXXXXXXXXXXX81"); # à récupérer la première fois
...
$ssh = ssh2_connect(SSH_SERVER,SSH_PORT);
if (ssh2_fingerprint ($ssh,SSH2_FINGERPRINT_MD5) != SSH_FINGERPRINT) { # bien penser à contrôler le fingerprint ; c'est dommage de s'en priver !
  echo "c'est mal";
}
if (!ssh2_auth_pubkey_file($ssh, SSH_LOGIN, SSH_KEY.".pub", SSH_KEY, '')) {
  echo "authentif par clef ratée";
}
...
if (@ssh2_scp_recv ($ssh, $fich_src, $fich_dest)) {
  echo "transfert OK";
}
...
</pre>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/06/29/scp-et-ssh-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mailing-lists multi-domaine avec mailman sur un postfix &#171;&#160;virtuel&#160;&#187; (mysql)</title>
		<link>http://michauko.org/blog/2011/06/10/mailing-lists-multi-domaine-avec-mailman-sur-un-postfix-virtuel-mysql/</link>
		<comments>http://michauko.org/blog/2011/06/10/mailing-lists-multi-domaine-avec-mailman-sur-un-postfix-virtuel-mysql/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 13:43:54 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[add_members]]></category>
		<category><![CDATA[list_lists]]></category>
		<category><![CDATA[mailman]]></category>
		<category><![CDATA[newlist]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[postfix-mysql]]></category>
		<category><![CDATA[rmlist]]></category>
		<category><![CDATA[sympa]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1210</guid>
		<description><![CDATA[Nouvel article pour compléter tous ceux sur l&#8217;installation d&#8217;un serveur de mails bien complet (voir ces tags). Cette fois il s&#8217;agit d&#8217;ajouter un outil de gestion de mailing-lists avec inscription, désinscription, modération etc. Bref, au choix, je pensais à &#171;&#160;sympa&#160;&#187; (dont j&#8217;ai déjà un peu parlé) ou mailman, que je ne connaissais pas. &#171;&#160;sympa&#160;&#187; en [...]]]></description>
			<content:encoded><![CDATA[<p>Nouvel article pour compléter tous ceux sur l&#8217;installation d&#8217;un serveur de mails bien complet (voir <a href="http://michauko.org/blog/?s=virtuel+postfix" target="_blank">ces tags</a>).<br />
Cette fois il s&#8217;agit d&#8217;ajouter un outil de gestion de mailing-lists avec inscription, désinscription, modération etc.<br />
Bref, au choix, je pensais à &laquo;&nbsp;sympa&nbsp;&raquo; (<a href="http://michauko.org/blog/tag/sympa/" target="_blank">dont j&#8217;ai déjà un peu parlé</a>) ou mailman, que je ne connaissais pas.</p>
<ul>
<li>
&laquo;&nbsp;sympa&nbsp;&raquo; en mode multi-domaine, arrêtez-moi si je me trompe, sur une installation postfix &laquo;&nbsp;virtuelle&nbsp;&raquo; (utilisateurs en base MySQL), c&#8217;était loin d&#8217;être gagné. Mal documenté à mon goût sur la partie multi-domaine.
</li>
<li>
&laquo;&nbsp;mailman&nbsp;&raquo; semblait pouvoir faire tout ça, avec une interface web (et ligne de commande) assez ancestrale, mais suffisante, efficace et qui marche <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</li>
</ul>
<p>Deux points de détails à bien regarder, qui m&#8217;ont fait faire cet article afin de ne pas oublier tout ça et que ça puisse resservir :</p>
<ul>
<li>
l&#8217;interconnexion de mailman avec la partie Mysql de postfix
</li>
<li>
le multi-domaine, afin de pouvoir gérer des listes genre liste1@domaine1.fr et liste2@domaine2.com, ces 2 domaines étant hébergés sur la même machine, la même installation postfix
</li>
</ul>
<p>Allez hop, c&#8217;est parti pour l&#8217;installation et les détails de configuration.<br />
Voyez d&#8217;abord mes articles sur l&#8217;installation complète <a href="http://michauko.org/blog/?s=postfix" target="_blank">postfix/mysql/amavis/spamassassin</a>/etc histoire de situer de quoi je parle.<span id="more-1210"></span></p>
<h1>Contexte</h1>
<p>On installe ça sur une Debian Squeeze, appelée &laquo;&nbsp;monserveur.fr&nbsp;&raquo; ayant plusieurs noms de domaine : &laquo;&nbsp;serveur.fr&nbsp;&raquo; et aussi &laquo;&nbsp;autredomaine.fr&nbsp;&raquo;<br />
On voudra créer des mailing-lists sur l&#8217;un ou l&#8217;autre des domaines.</p>
<h1>Installation</h1>
<h2>aptitude</h2>
<p>J&#8217;ai préféré opter pour la version packagée plutôt que la dernière version officielle en .tar.gz, histoire de simplifier les migrations de Debian. Ca commence comme bien souvent :</p>
<pre>monserveur:~# aptitude install mailman
Les NOUVEAUX paquets suivants vont être installés :
  mailman
0 paquets mis e jour, 1 nouvellement installés, 0 e enlever et 0 non mis e jour.
Il est nécessaire de télécharger 9 642 ko d'archives. Après dépaquetage, 44,3 Mo seront utilisés.
Prendre : 1 ftp://ftp.fr.debian.org/debian/ squeeze/main mailman amd64 1:2.1.13-5 [9 642 kB]
 9 642 ko téléchargés en 1s (8 576 ko/s)
Lecture des champs des paquets... Fait
Lecture de l'état des paquets... Fait
Récupération des rapports de bogue... Fait
Analyse des informations Trouvé/Corrigé... Fait
Bogues de gravité serious sur mailman (-> 1:2.1.13-5) <non corrigé>
 #611804 - Astonishing header mangling
Résumé :
 mailman(1 bogue)
Êtes-vous certain de vouloir installer/mettre e jour les paquets ci-dessus ? [Y/n/?/...]
Préconfiguration des paquets...
Sélection du paquet mailman précédemment désélectionné.
(Lecture de la base de données... 57308 fichiers et répertoires déje installés.)
Dépaquetage de mailman (e partir de .../mailman_1%3a2.1.13-5_amd64.deb) ...
Traitement des actions différées (« triggers ») pour « man-db »...
Paramétrage de mailman (1:2.1.13-5) ...
Looking for enabled languages (this may take some time) ... done.
Installing site language en ............................................ done.
Configuring mailman for domain monserveur.fr ...
Mise e jour de la version 0x0 vers 0x2010df0
suppression des anciens fichiers sources
Mise e jour de la liste de diffusion mailman
Mise e jour de la base de donnees des requetes en attente.
- mise e jour de l'ancien fichier mbox prive
Rien e faire.
- Mise e jour de l'ancien fichier mbox public
Rien e faire.
Reparation des modeles de langue : mailman

Mise e jour des filigranes Usenet
- rien e mettre e jour ici
Rien e faire.
mise e jour des anciens fichiers qfiles
Starting Mailman master qrunner: mailmanctl.</pre>
<p>Un seul écran à noter :</p>
<pre>
Pas de liste du site                                                                                                                                                      ¦
  ¦                                                                                                                                                                           ¦
  ¦ Mailman a besoin d'une liste du site (« site list »). Elle permet d'envoyer les rappels pour les mots de passe, etc. Elle doit être créée avant le lancement de Mailman.  ¦
  ¦                                                                                                                                                                           ¦
  ¦ Pour créer cette liste, exécuter « newlist mailman » et suivez les instructions qui apparaissent e l'écran. Il est ensuite nécessaire de redémarrer mailman avec la       ¦
  ¦ commande « /etc/init.d/mailman start ».</pre>
<p>L&#8217;installation créera cette liste de diffusion appelée &laquo;&nbsp;mailman&nbsp;&raquo; (et j&#8217;avoue que je ne comprends pas son utilité&#8230;)</p>
<h2>permissions</h2>
<p>Il faut vérifier/adapter les permissions qui ne semblent pas bonnes après installation :</p>
<pre>monserveur:~# check_perms
Les repertoires doivent etre au moins en 02775 : /var/lib/mailman/logs
Mauvais gid pour /var/lib/mailman/cgi-bin (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/locks (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/scripts (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/mail (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/Mailman (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/cron (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/templates (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/logs (Obtenu: root, Attendu list)
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages
Mauvais gid pour /var/lib/mailman/icons (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/bin (Obtenu: root, Attendu list)
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/gl
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/pt
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ko
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ro
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/it
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ca
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/cs
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/vi
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/he
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ia
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/eu
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/de
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ar
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/zh_TW
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ru
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/zh_CN
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/uk
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/pt_BR
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sv
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/fi
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/da
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sr
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/tr
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/et
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ja
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/fr
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/lt
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/hr
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ast
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/nl
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sl
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/hu
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sk
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/es
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/no
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/pl
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/gl/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/pt/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ko/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ro/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/it/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ca/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/cs/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/vi/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/he/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ia/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/eu/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/de/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ar/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/zh_TW/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ru/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/zh_CN/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/uk/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/pt_BR/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sv/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/fi/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/da/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sr/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/tr/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/et/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ja/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/fr/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/lt/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/hr/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/ast/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/nl/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sl/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/hu/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/sk/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/es/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/no/LC_MESSAGES
Les permissions sur les repertoires doivent etre de 02775 : /var/lib/mailman/messages/pl/LC_MESSAGES
Problemes trouves : 84
Re-executer en tant que list (ou root) avec l'option -f pour reparer</pre>
<p>On execute la même commande avec le paramètre <code>-f</code> et on recontrôle :</p>
<pre>Mauvais gid pour /var/lib/mailman/cgi-bin (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/locks (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/scripts (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/mail (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/Mailman (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/cron (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/templates (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/logs (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/icons (Obtenu: root, Attendu list)
Mauvais gid pour /var/lib/mailman/bin (Obtenu: root, Attendu list)
Problemes trouves : 10</pre>
<p>MAIS : il s&#8217;agit de liens symboliques et l&#8217;outil contrôle les permissions des liens, pas des fichiers visés. Bref, c&#8217;est bon.</p>
<h2>Conf mailman</h2>
<p><em>Une partie de la doc d&#8217;installaiton est dans <code>/usr/lib/mailman/bin/postfix-to-mailman.py</code> qui est un lien vers <code>/etc/mailman/postfix-to-mailman.py</code>. Attention, cette doc doit être transposée au contexte &laquo;&nbsp;serveur virtuel avec conf en MySQL&nbsp;&raquo; &#8211; ce que je fais dans cet article.<br />
</em><br />
Dans <code>/etc/mailman/mm_cfg.py</code>, j&#8217;adapte ces paramètres là :<br />
DEFAULT_SERVER_LANGUAGE = &#8216;fr&#8217;<br />
MTA=&#8217;Postfix&#8217;</p>
<h2>Codes d&#8217;accès à mailman</h2>
<p>Remarque :<br />
<em>&laquo;&nbsp;mailman&nbsp;&raquo; peut s&#8217;utiliser en ligne de commande, voir la liste des commandes possibles (éventuellement pratique pour scripter) : <code>dpkg -L mailman | grep bin</code>. Ca permet de découvrir la liste des outils : rmlist, list_lists, add_members, newlist etc&#8230;<br />
</em><br />
L&#8217;accès à l&#8217;interface mailman ne se fait pas avec un identifiant et un mot de passe, mais juste avec un mot de passe.<br />
Pour créer des &laquo;&nbsp;comptes&nbsp;&raquo; de la sorte, c&#8217;est l&#8217;outil <code>mmsitepass</code>.</p>
<h2>Conf apache</h2>
<p>Par défaut, le script mailman d&#8217;interface web est accessible sur <code>http://votre.serveur/cgi-bin/mailman/admin/</code>. Si vous n&#8217;aimez pas les répertoires standards, vous pouvez adapter le fichier <code>/etc/mailman/apache.conf</code> en adaptant <code>/cgi-bin/mailman/</code> et <code>/pipermail/</code> et en conséquence le fichier <code>/etc/mailman/postfix-to-mailman.py</code>, paramètres <code>DEFAULT_URL_PATTERN</code> et <code>PRIVATE_ARCHIVE_URL</code>.</p>
<h1>Configuration postfix</h1>
<h2>&laquo;&nbsp;pipe&nbsp;&raquo; postfix : interface postfix <-> binaires mailman</h2>
<p>En fait, tout est déjà OK à la base &#8211; avant même l&#8217;installation de mailman !. C&#8217;est marrant ça, l&#8217;outil doit être bien ancré dans le monde UNIX&#8230;</p>
<pre>monserveur:~# grep mailman /etc/postfix/*
/etc/postfix/master.cf:mailman   unix  -       n       n       -       -       pipe
/etc/postfix/master.cf:  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py</pre>
<p>On voir qu&#8217;on a un canal de communication &laquo;&nbsp;mailman&nbsp;&raquo; qui renvoie vers un script python qui fera le boulot</p>
<h2>transport : interface postfix <-> &laquo;&nbsp;pipe&nbsp;&raquo;</h2>
<p>Dans ma table &laquo;&nbsp;transport&nbsp;&raquo; (voir <a href="http://michauko.org/blog/2009/10/20/postfix-utilisateurs-virtuels-mysql-acces-pop3s-imaps-sasl-et-tls-quota-bingo-jai-tout-mis-dans-le-titre/" target="_blank">cet article</a>), j&#8217;ajoute :</p>
<pre>insert into transport values ('list.serveur.fr','mailman'),('list.autredomaine.fr','mailman');</pre>
<p>Ceci prépare le terrain : si on écrit à une adresse @list.serveur.fr ou @list.autredomaine.fr (comme je disais au début de la doc), alors postfix passera le relai au &laquo;&nbsp;pipe&nbsp;&raquo; nommé &laquo;&nbsp;mailman&nbsp;&raquo; (issu du <code>master.cf</code> de <code>postfix</code>), donc aux scripts mailman.<br />
Rien de nécessaire dans la table &laquo;&nbsp;domains&nbsp;&raquo; ; comme pour le répondeur vacation (<a href="http://michauko.org/blog/2010/06/16/utilisateurs-postfix-virtuels-ajouter-un-repondeur-vacation/" target="_blank">voir précédent article</a>).</p>
<h2>Multi-domaine</h2>
<p>J&#8217;ai déclaré ceci dans le fichier <code>/etc/mailman/mm_cfg.py</code> :</p>
<pre>add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
add_virtualhost('list.serveur.fr','monserveur.fr')
add_virtualhost('list.autredomaine.fr','monserveur.fr')</pre>
<p>Pour gérer le multi-domaine, c&#8217;est aussi simple que ça (et les bons transports SQL). J&#8217;y reviendrai un peu plus tard tout de même.</p>
<h2>main.cf</h2>
<p>La doc dit d&#8217;ajouter <code>mailman_destination_recipient_limit=1</code> dans <code>/etc/postfix/main.cf</code> ; soit.</p>
<h1>Relance de tout ça</h1>
<pre>reload apache
restart mailman
reload postfix</pre>
<p>Rien dans amavis, comme pour les répondeurs vacation</p>
<h1>Créer une liste</h1>
<p>On veut créer une liste &laquo;&nbsp;mesabonnes@serveur.fr&nbsp;&raquo;.</p>
<h2>Au niveau SQL</h2>
<p>On déclare tout ça :</p>
<pre>insert into forwardings values ('mesabonnes-admin@serveur.fr','mesabonnes-admin@list.serveur.fr');
insert into forwardings values ('mesabonnes-bounces@serveur.fr','mesabonnes-bounces@list.serveur.fr');
insert into forwardings values ('mesabonnes-confirm@serveur.fr','mesabonnes-confirm@list.serveur.fr');
insert into forwardings values ('mesabonnes-join@serveur.fr','mesabonnes-join@list.serveur.fr');
insert into forwardings values ('mesabonnes-leave@serveur.fr','mesabonnes-leave@list.serveur.fr');
insert into forwardings values ('mesabonnes-owner@serveur.fr','mesabonnes-owner@list.serveur.fr');
insert into forwardings values ('mesabonnes-request@serveur.fr','mesabonnes-request@list.serveur.fr');
insert into forwardings values ('mesabonnes-subscribe@serveur.fr','mesabonnes-subscribe@list.serveur.fr');
insert into forwardings values ('mesabonnes-unsubscribe@serveur.fr','mesabonnes-unsubscribe@list.serveur.fr');</pre>
<p>Et bien sûr :</p>
<pre>insert into forwardings values ('mesabonnes@serveur.fr','mesabonnes@list.serveur.fr');</pre>
<p>C&#8217;est bien ici qu&#8217;on voit comment le lien entre la liste et mailman est fait : les adresses sont renvoyées vers un domaine bidon (pas nécessaire de le déclarer dans un DNS, c&#8217;est interne à postfix), domaine pour lequel un &laquo;&nbsp;transport&nbsp;&raquo; particulier est créé afin d&#8217;envoyer le courrier vers le pipe unix => script mailman.</p>
<h2>Enfin, au niveau de mailman</h2>
<p>En tant que root, <code>newlist mesabonnes</code>. On met un responsable de la liste et un code d&#8217;accès.</p>
<h2>Administration de la liste par le web (hors ligne de commande, donc)</h2>
<p>L&#8217;outil principal listant toutes les listes est là : <code>http://serveur.fr/cgi-bin/mailman/admin/</code> si vous n&#8217;avez pas changé les adresses. Une fois une liste sélectionnée, on obtient l&#8217;interface suivante :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2011/06/mailman.png"><img src="http://michauko.org/blog/wp-content/uploads/2011/06/mailman-300x98.png" alt="interface mailman" title="interface mailman" width="300" height="98" class="aligncenter size-medium wp-image-1226" /></a><br />
Ensuite, c&#8217;est le festival des options.<br />
Il faut bien les lire une fois et noter celles qui vous intéressent : masquer l&#8217;expéditeur, limiter la taille des messages, fixer les règles de modération, éviter les doublons (lorsqu&#8217;une personne de la liste répond à la liste, doit-elle recevoir le mail, simplement un accusé ?), Il y a des outils pour abonner des gens en masse (sans les prévenir ou en les prévenant) etc etc.<br />
La seule chose que je vais mentionner, par rapport au multi-domaine, c&#8217;est l&#8217;option &laquo;&nbsp;Le nom d&#8217;hôte préféré par cette liste de diffusion pour le courriel.&nbsp;&raquo; du menu &laquo;&nbsp;[Options Générales]&nbsp;&raquo; afin d&#8217;indiquer le vrai serveur sous lequel est utilisé la liste : serveur.fr et pas autredomaine.fr dans l&#8217;exemple.</p>
<p>Voilà, normalement ça marche <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>Remarques</h1>
<h2>multi-domaine</h2>
<p>On a vu rapidement que le multi-domaine marchait facilement : les transports dans la table SQL + quelques lignes dans mm_cfg.py et les alias qui vont bien.<br />
MAIS : l&#8217;identifiant de la liste ne tient pas compte du nom de serveur. Donc les noms devront être différents d&#8217;un domaine à l&#8217;autre (je suppose), impossible donc d&#8217;avoir liste1@serveur.fr et liste1@autredomaine.fr pointant vers la même installation mailman.<br />
On peut imaginer plein d&#8217;autres méthodes pour contourner ça. J&#8217;en mentionne une car je l&#8217;ai testée et la contrainte d&#8217;avoir des noms différents ne me gêne pas.<br />
Je peux passer par des noms de listes intermédiaires pour éviter les problèmes, exemple :<br />
- liste1@serveur.fr ==forward==> interne_liste1@list.monserveur.fr<br />
- liste1@autredomaine.fr == forward ==> interne_liste2@list.monserveur.fr<br />
Et donc avoir déclaré avec &laquo;&nbsp;newlist&nbsp;&raquo; les listes interne_liste1/2<br />
Ca marche. Sauf que mailman considère qu&#8217;il y a une forme de redirection et tous les messages sont soumis à modération (même pour une liste non modérée) pour signaler à l&#8217;administrateur que quelqu&#8217;un a fait un alias de cette liste.<br />
Ici on s&#8217;en fout, mais imaginons que quelqu&#8217;un crée un simple alias &laquo;&nbsp;labandedabrutis@cabalance.fr&nbsp;&raquo; pointant vers votre liste, la bande d&#8217;abrutis en question sera ravie de ne pas être connue sous ce nom là&#8230;</p>
<h2>lien avec spamassassin</h2>
<p>Je n&#8217;ai pas cherché longtemps, c&#8217;est bien fait de base (sûrement un paramétrage &#8211; ou l&#8217;ordre ? &#8211; qui va bien dans <code>/etc/postfix/master.cf</code>) qui fait que le mail passe par toute la chaîne amavis/spamassassin/clamav. Ca se voit nettement dans les logs.</p>
<h2>générer les alias facilement</h2>
<p>Utilisez ce script :</p>
<pre>#!/bin/bash
if test -z $1
then
        echo Usage: $0 liste serveur
        exit -1
fi
if test -z $2
then
        echo Usage: $0 liste serveur
        exit -1
fi

for i in admin bounces confirm join leave owner request subscribe unsubscribe
do
        echo insert into forwardings values \(\'$1-$i@$2\',\'$1-$i@list.$2\'\)\;
done
echo insert into forwardings values \(\'$1@$2\',\'$1@list.$2\'\)\;</pre>
<p>Voilà, c&#8217;est complet je pense. Amusez-vous bien.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/06/10/mailing-lists-multi-domaine-avec-mailman-sur-un-postfix-virtuel-mysql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<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>Dépôts (repositories) Debian/Squeeze</title>
		<link>http://michauko.org/blog/2011/02/07/depots-repositories-debiansqueeze/</link>
		<comments>http://michauko.org/blog/2011/02/07/depots-repositories-debiansqueeze/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 07:10:31 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[/etc/apt/sources.list]]></category>
		<category><![CDATA[lenny]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[squeeze]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1200</guid>
		<description><![CDATA[Hop, Ca ne vous aura sûrement pas échappé, mais Debian a sorti sa nouvelle version majeure. Bye bye &#171;&#160;Lenny&#160;&#187;, bonjour &#171;&#160;Squeeze&#160;&#187;. Au passage, un changement important : le dépôt &#171;&#160;volatile&#160;&#187; n&#8217;existe plus, il est remplacé par une une branche squeeze-updates. Rappel : le dépôt &#171;&#160;volatile&#160;&#187; contient les mises à jour des paquets ne pouvant pas [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,<br />
Ca ne vous aura sûrement pas échappé, mais Debian a sorti sa nouvelle version majeure. Bye bye &laquo;&nbsp;Lenny&nbsp;&raquo;, bonjour &laquo;&nbsp;Squeeze&nbsp;&raquo;.</p>
<p>Au passage, un changement important : le dépôt &laquo;&nbsp;volatile&nbsp;&raquo; n&#8217;existe plus, il est remplacé par une une branche squeeze-updates.<br />
<strong>Rappel </strong>: le dépôt &laquo;&nbsp;volatile&nbsp;&raquo; contient les mises à jour des paquets ne pouvant pas attendre une nouvelle version Debian tous les 2 ou 3 ans <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Exemples : protocoles des clients de messagerie instantanée, outillage anti-spam etc.<br />
Alors je résume ici ce que doit être un fichier minimum correct de listes de dépôts pour Squeeze, fichier <code>/etc/apt/sources.list</code> :</p>
<pre>deb ftp://ftp.fr.debian.org/debian/ squeeze main contrib  non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
# avant squeeze : deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb ftp://ftp.fr.debian.org/debian/ squeeze-updates main contrib  non-free
#optionnel :
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
</pre>
<p>Merci à toute l&#8217;équipe Debian, nous leur devons une reconnaissance éééééternelle <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/02/07/depots-repositories-debiansqueeze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>spamassassin : rulesemporium est mort</title>
		<link>http://michauko.org/blog/2011/01/25/spamassassin-rulesemporium-est-mort/</link>
		<comments>http://michauko.org/blog/2011/01/25/spamassassin-rulesemporium-est-mort/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 11:05:42 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[anti-spam]]></category>
		<category><![CDATA[rulesemporium]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1194</guid>
		<description><![CDATA[Hop, Je n&#8217;avais pas vu le truc avant qu&#8217;une mise à jour spamassassin me remonte une alerte, mais le site RulesEmporium a fermé. Plus d&#8217;activité, soit. Mais d&#8217;avoir supprimé le contenu, c&#8217;est dommage je trouve. Bon bref, toujours est-il que j&#8217;ai de nouveau un petit bout de l&#8217;outil de détection des textes &#171;&#160;cachés&#160;&#187; dans les [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,<br />
Je n&#8217;avais pas vu le truc avant qu&#8217;une mise à jour spamassassin me remonte une alerte, mais le site RulesEmporium a fermé. Plus d&#8217;activité, soit. Mais d&#8217;avoir supprimé le contenu, c&#8217;est dommage je trouve.<br />
Bon bref, toujours est-il que j&#8217;ai de nouveau un petit bout de l&#8217;outil de détection des textes &laquo;&nbsp;cachés&nbsp;&raquo; dans les images (spam viagra &#038; co) qui ne fonctionne plus.<br />
D&#8217;ici à trouver quelque chose d&#8217;autre, je laisse en plan et je supprime simplement les quelques règles de détection impactées.<span id="more-1194"></span><br />
Le symptôme est le suivant, issu d&#8217;un <code>spamassassin --lint -D</code>, on obtient :</p>
<blockquote><p>
[30926] warn: rules: failed to run CG_FUJI_JPG test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 856.<br />
[30926] warn: )<br />
[30926] warn: rules: failed to run CG_DOUBLEDOT_GIF test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 986.<br />
[30926] warn: )<br />
[30926] warn: rules: failed to run CG_SONY_JPG test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 1602.<br />
[30926] warn: )<br />
[30926] warn: rules: failed to run CG_CANON_JPG test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 2704.<br />
[30926] warn: )
</p></blockquote>
<p>Je commente l&#8217;appel à ces règles dans <code>/etc/spamassassin/imageinfo.cf</code>.<br />
Et enfin je désactive la mise à jour via <code>sa-update</code>, en commentant mes lignes <code>/etc/spamassassin/channels.txt</code>.</p>
<p>A suivre.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/01/25/spamassassin-rulesemporium-est-mort/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Utilisation d&#8217;une clef 3g&#8230;</title>
		<link>http://michauko.org/blog/2010/12/02/utilisation-dune-clef-3g/</link>
		<comments>http://michauko.org/blog/2010/12/02/utilisation-dune-clef-3g/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 19:22:58 +0000</pubDate>
		<dc:creator>ours</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[reseau et sécu]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[clé]]></category>
		<category><![CDATA[clef]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[orange]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1179</guid>
		<description><![CDATA[Je jette pêle-mêle ici les informations nécessaire à l'utilisation d'une clef 3g Nokia CS-10 sous Debian (testing) avec un abonnement pro Orange.
]]></description>
			<content:encoded><![CDATA[<p>Je jette pêle-mêle ici les informations nécessaire à l&#8217;utilisation d&#8217;une clef 3g sous Debian (testing).<br />
Dans mon cas, il s&#8217;agit d&#8217;une clef Nokia CS-10, que j&#8217;utilise avec la SIM jumelle de mon téléphone pro (orange).<br />
<span id="more-1179"></span></p>
<p><strong>Packages requis:</strong></p>
<ul>
<li><code>comgt</code> pour gérer la partie code PIN;</li>
<li><code>ppp</code> pour la partie connexion à Internet;</li>
<li><code>gsm-utils</code> pour la partie envoyer/recevoir des SMS</li>
</ul>
<p><strong>Problème standard avec les clefs 3g:</strong><br />
Quand on les sorts de l&#8217;emballage et qu&#8217;on les branche sur un linux, on ne trouve pas la clef (pas de /dev/ttyUSBX, pas de /dev/ttyACMX ou /dev/nzX ou &#8230;).<br />
Elles sont vues dans le meilleurs des cas comme un support de stockage ou un CD-ROM que l&#8217;on peut monter pour y trouver en général le mode d&#8217;emploi, les drivers windows et mac et les petits softs qui vous pourrissent le système.<br />
Avec la Nokia CS-10, on contre ça avec un script et une règle udev qui désactivent et &laquo;&nbsp;éjectent&nbsp;&raquo; ce périphérique non voulu:<br />
Le script (<code>nokia-zerocd</code>) se mets dans <code>/lib/udev</code> (avec les bons droits: <strong>0755</strong>), et est assez basique:</p>
<blockquote><p>#!/bin/sh<br />
if [ -f /etc/udev/nokia-zerocd-noeject ]<br />
then<br />
        exit 1<br />
fi<br />
minor=$(echo $2 | sed &#8216;s/.[0-9]*\.//&#8217;)<br />
major=$(echo $2 | sed &#8216;s/\.[0-9]*$//&#8217;)<br />
if [ "$major" -gt "0" ] || &laquo;&nbsp;$minor&nbsp;&raquo; -gt &laquo;&nbsp;10&#8243; ]<br />
then<br />
        exit 1<br />
fi<br />
exit 0</p></blockquote>
<p>La régle udev (<code>99-nokia-zerocd.rules</code>) se met dans <code>/etc/udev/rules.d</code> (avec les bons droits: <strong>0644</strong>):</p>
<blockquote><p>SUBSYSTEMS==&nbsp;&raquo;usb&nbsp;&raquo;, SYSFS{idVendor}==&nbsp;&raquo;0421&#8243;, SYSFS{idProduct}==&nbsp;&raquo;060c&nbsp;&raquo;, ACTION==&nbsp;&raquo;add&nbsp;&raquo;, PROGRAM==&nbsp;&raquo;nokia-zerocd %M %s{serial}&nbsp;&raquo;, RUN+=&nbsp;&raquo;/usr/bin/eject -s %k&nbsp;&raquo;, OPTIONS+=&nbsp;&raquo;last_rule&nbsp;&raquo;</p></blockquote>
<p>Il suffit ensuite de recharger les règles udev: <code>sudo /etc/init.d/udev restart</code>.</p>
<p>Maintenant, on peut brancher la clef (où l&#8217;on a pensé à insérer la SIM), et elle devrait bien être détectée au bout de quelques secondes (on devrait trouver deux nouveaux <em>devices</em>: <code>/dev/ttyACM0</code> et <code>/dev/ttyACM1</code>).</p>
<p><strong>Activer/Connecter la carte au réseau 3g:</strong><br />
Cela se fait assez facilement, avec la commande <code>comgt</code>:</p>
<blockquote><p># comgt -d /dev/ttyACM0<br />
Enter PIN number: XXXX</p>
<p>Waiting for Regestration..(120 sec max)..<br />
Registered on Home network: &laquo;&nbsp;Orange F&nbsp;&raquo;,2<br />
Signal Quality: 19,0</p></blockquote>
<p>Maintenant, on peut se servir de la clef pour envoyer/recevoir des SMS ou se connecter à Internet.</p>
<p><strong>La partie simple: envoyer un SMS</strong></p>
<blockquote><p>gsendsms -d /dev/ttyACM0 0612345678 &laquo;&nbsp;mon message&nbsp;&raquo;</p></blockquote>
<p><strong>La partie plus &laquo;&nbsp;complexe&nbsp;&raquo;: se connecter à internet</strong></p>
<p>Cette partie est plus complexe parce qu&#8217;il faut savoir que ces modems ne supportent pas tous le même jeu de commandes AT, donc, tout ce qui suit ne fonctionnera pas forcément avec d&#8217;autres modem (il faudra sûrement adapter le nom du device et une partie des commandes AT qui permettent d&#8217;initialiser le modem).</p>
<p>A la fin du fichier <code>/etc/ppp/pap-secrets</code>, ajouter une ligne (adapter en fonction de votre cas):</p>
<blockquote><p>orange * orange</p></blockquote>
<p>Créer le fichier /etc/ppp/peers/orange (vous pouvez l&#8217;appelez autrement) en pensant à adapter le nom du <em>device</em>, le nom d&#8217;utilisateur et le débit du <em>device</em> à votre cas:</p>
<blockquote><p>ipcp-restart 7<br />
lcp-echo-failure 99<br />
lcp-echo-interval 0<br />
lcp-restart 10<br />
connect &#8216;/usr/sbin/chat -v -e -f /etc/ppp/peers/orange.chat&#8217;<br />
<em>/dev/ttyACM0</em><br />
<em>460800</em><br />
crtscts<br />
noipdefault<br />
defaultroute<br />
ipcp-accept-local<br />
ipcp-accept-remote<br />
noipx<br />
noccp<br />
usepeerdns<br />
nodeflate<br />
novj<br />
novjccomp<br />
nobsdcomp<br />
nopredictor1<br />
nopcomp<br />
noaccomp<br />
noauth<br />
user <em>orange</em></p></blockquote>
<p>Créer le fichier <code>/etc/ppp/peers/orange.chat</code> (vous pouvez l&#8217;appeler autrement, mais penser à modifier le fichier précédent):</p>
<blockquote><p>&nbsp;&raquo; ATZ<br />
OK-AT-OK &laquo;&nbsp;ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&#8243;<br />
OK-AT-OK &#8216;AT+CGDCONT=<em>1,&nbsp;&raquo;IP&nbsp;&raquo;,&nbsp;&raquo;orange-mib&nbsp;&raquo;,&nbsp;&raquo;",0,0</em>&#8216;<br />
OK-AT-OK &#8216;<em><strong>ATD</strong>*99***1#</em>&#8216;<br />
CONNECT &#8216;\d\c&#8217;</p></blockquote>
<p><strong>ATTENTION!</strong><br />
Le numéro de téléphone n&#8217;a manifestement pas d&#8217;importance (<code>*99#</code>, <code>*99*1#</code> marcheraient aussi bien) et ne dépend manifestement pas de l&#8217;opérateur (il est juste là parce qu&#8217;il en faut un), par contre, la commande AT qui permet de le composer peut changer d&#8217;une clef et d&#8217;un opérateur à l&#8217;autre (<code>ATD</code><em>num</em> ou <code>ATDT</code><em>num</em> en général).<br />
La ligne <code>CGDCONT</code> dépend de votre opérateur <strong>et</strong> de votre abonnement, à vous de trouver la bonne <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Celle de cette exemple marche bien pour un abonnement orange pro avec forfait data.<br />
La première ligne devrait être la même partout, par contre, entre la première et les 3 dernières, ça peut-être totalement différent <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Notes en vrac:</strong></p>
<ul>
<li>La même chose doit pouvoir marcher en branchant le téléphone en USB et en le configurant en mode modem</li>
<li>Si vous connecter le téléphone via <em>bluetooth</em>, le device devrait s&#8217;appeller <code>/dev/rfcommX</code></li>
<li>En GPRS (2g), la vitesse du <em>device</em> est souvent <code>115200 bauds</code> (pas comme les <code>460800</code> de la 3g/umts/hsdpa)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/12/02/utilisation-dune-clef-3g/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nagios : supervision d&#8217;une base Oracle</title>
		<link>http://michauko.org/blog/2010/11/16/nagios-supervision-dune-base-oracle/</link>
		<comments>http://michauko.org/blog/2010/11/16/nagios-supervision-dune-base-oracle/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 14:52:06 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[supervision]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[check_oracle_health]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[NRPE]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[oracletoolbox]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1167</guid>
		<description><![CDATA[Hop, j&#8217;ai trouvé ça : http://labs.consol.de/nagios/check_oracle_health/ repéré sur exchange.nagios.org. Y&#8217;a aussi le pendant pour MySQL, MSSQL etc. A voir à l&#8217;occasion. Ca permet de contrôler depuis Nagios tout un tas de choses dans une instance Oracle : hit ratio, nb de sessions, vitesse de remplissage des redo logs, espace libre des tablespaces etc. Avec ça [...]]]></description>
			<content:encoded><![CDATA[<p>Hop, j&#8217;ai trouvé ça : <a href="http://labs.consol.de/nagios/check_oracle_health/">http://labs.consol.de/nagios/check_oracle_health/</a> repéré sur <a href="http://exchange.nagios.org/directory/Plugins/Databases/Oracle/check_oracle_health/details">exchange.nagios.org</a>.<br />
Y&#8217;a aussi le pendant pour MySQL, MSSQL etc. A voir à l&#8217;occasion.</p>
<p>Ca permet de contrôler depuis Nagios tout un tas de choses dans une instance Oracle : hit ratio, nb de sessions, vitesse de remplissage des redo logs, espace libre des tablespaces etc.<br />
Avec ça et <a href="http://michauko.org/blog/2010/02/03/oracletoolbox-sous-linux-pour-analyser-vos-perfs-oracle/">Oracle ToolBox que je décris là</a>, y&#8217;a de quoi surveiller et optimiser.</p>
<p>L&#8217;installation de ce plug-in est assez simple. Le plus dur est d&#8217;avoir un environnement PERL/Oracle fonctionnel. Je le décris <a href="http://michauko.org/blog/2010/11/15/libdbd-oracle-perl-sur-debian/">dans un précédent article, car ça bug un peu</a>.</p>
<h1>Installation</h1>
<p>Ensuite, il faut simplement <span id="more-1167"></span>récupérer les sources (actuellement <a href="http://labs.consol.de/wp-content/uploads/2010/10/check_oracle_health-1.6.6.1.tar.gz">cette version</a>), lire le fichier &laquo;&nbsp;INSTALL&nbsp;&raquo;, ce qui revient à taper un classique configure/make/make check/make install et vérifier qu&#8217;on obtient bien le binaire dans <code>/usr/local/nagios/libexec/</code>.<br />
Si vous devez créer un utilisateur Oracle dédié pour analyser ces indicateurs, la doc dit de lui donner ces permissions :</p>
<pre>serveur:~# sqlplus sys/manager_que_t_as_pas_change_gros_malin@MABASE as sysdba
CREATE user nagios IDENTIFIED BY super_motdepasse;
GRANT CREATE session TO nagios;
GRANT SELECT any dictionary TO nagios;
GRANT SELECT ON V_$SYSSTAT TO nagios;
GRANT SELECT ON V_$INSTANCE TO nagios;
GRANT SELECT ON V_$LOG TO nagios;
GRANT SELECT ON SYS.DBA_DATA_FILES TO nagios;
GRANT SELECT ON SYS.DBA_FREE_SPACE TO nagios;</pre>
<h1>Test en ligne de commande</h1>
<p>Enfin, on l&#8217;essaye avec :<br />
<code>/usr/local/nagios/libexec/check_oracle_health</code><br />
Par exemple :</p>
<pre>serveur:~#/usr/local/nagios/libexec/check_oracle_health  --connect nagios/super_motdepasse@MABASE --mode sga-library-cache-hit-ratio
CRITICAL - SGA library cache hit ratio 53.51% | sga_library_cache_hit_ratio=53.51%;98:;95:
</pre>
<p>Houuuuu, la baffe !</p>
<h1>Intégration dans Nagios</h1>
<p>Et pour intégrer tout ça dans Nagios, il suffit de jouer avec NRPE en ajoutant les petites commandes qui vont bien dans le fichier <code>/etc/nagios/nrpe_local.cfg</code>. <a href="http://michauko.org/blog/2010/01/06/nrpe-monitorer-des-linux-avec-nagios/">J&#8217;en parle déjà ici</a>. Et comme je suis sympa, j&#8217;en donne un long exemple en fin de cet article.</p>
<p>Une fois lancé depuis Nagios, alors qu&#8217;en utilisateur nagios et ligne de commande, ça marchait bien, je me suis récupéré l&#8217;erreur ORA-24327 &laquo;&nbsp;need explicit attach before authenticating a user&nbsp;&raquo; en sortie de NRPE&#8230;<br />
Il manquait des variables d&#8217;environnement à passer à l&#8217;utilisateur nagios pour le daemon NRPE. Je n&#8217;ai rien trouvé plus propre que de modifier le script de lancement du service&#8230; (si vous avez mieux, dites moi) :</p>
<pre>serveur_nrpe:~# head -30 /etc/init.d/nagios-nrpe-server
#! /bin/sh
#

### BEGIN INIT INFO
# Provides:          nagios-nrpe-server
# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
# Required-Stop:     $local_fs $remote_fs $syslog $named $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop the Nagios remote plugin execution daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nrpe
NAME=nagios-nrpe
DESC=nagios-nrpe
CONFIG=/etc/nagios/nrpe.cfg

<strong>### JACQUES pour ORACLE/Nagios check_oracle_health
export ORACLE_HOME=/usr/lib/oracle/11.1/client
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
###
</strong>
test -x $DAEMON || exit 0

blablablababla...</pre>
<h1>Résultat</h1>
<p>A la fin, ouaaa, ça donne ça :<br />
<a href="http://michauko.org/blog/wp-content/uploads/2010/11/20101116_152343.png"><img src="http://michauko.org/blog/wp-content/uploads/2010/11/20101116_152343-300x103.png" alt="check_oracle_health" title="check_oracle_health" width="300" height="103" class="aligncenter size-medium wp-image-1169" /></a><br />
Yapuka corriger la palanquée de problèmes. Où est mon DBA ? ah, y&#8217;en a pas, ça promet. Allez, on ressort &laquo;&nbsp;Oracle for dummies&nbsp;&raquo;.</p>
<h1>Annexes</h1>
<h2>Conf NRPE de tous les tests</h2>
<p>Comme je suis sympa, je donne un bout de fichier de conf NRPE au cas où. J&#8217;ai simplement fait cracher tous les &laquo;&nbsp;modes&nbsp;&raquo; (contrôles)  possibles en scriptant, histoire de générer ça facilement.</p>
<pre>#command[ORAOCTM_tnsping]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tnsping
command[ORAOCTM_connection-time]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode connection-time
command[ORAOCTM_connected-users]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode connected-users
command[ORAOCTM_sga-data-buffer-hit-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sga-data-buffer-hit-ratio
command[ORAOCTM_sga-library-cache-hit-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sga-library-cache-hit-ratio
command[ORAOCTM_sga-dictionary-cache-hit-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sga-dictionary-cache-hit-ratio
command[ORAOCTM_sga-latches-hit-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sga-latches-hit-ratio
command[ORAOCTM_sga-shared-pool-reload-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sga-shared-pool-reload-ratio
command[ORAOCTM_sga-shared-pool-free]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sga-shared-pool-free
command[ORAOCTM_pga-in-memory-sort-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode pga-in-memory-sort-ratio
command[ORAOCTM_invalid-objects]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode invalid-objects
command[ORAOCTM_stale-statistics]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode stale-statistics
command[ORAOCTM_tablespace-usage1]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-usage --tablespace BASEDATA
command[ORAOCTM_tablespace-usage2]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-usage --tablespace BASEIDX
command[ORAOCTM_tablespace-usage3]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-usage --tablespace SYSAUX
command[ORAOCTM_tablespace-usage4]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-usage --tablespace SYSTEM
command[ORAOCTM_tablespace-usage5]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-usage --tablespace TEMP
command[ORAOCTM_tablespace-usage6]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-usage --tablespace UNDOTBS1
#command[ORAOCTM_tablespace-free]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-free
### A séparer en plusieurs tablespace au besoin :
command[ORAOCTM_tablespace-remaining-time]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-remaining-time
###
command[ORAOCTM_tablespace-fragmentation1]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-fragmentation --tablespace BASEDATA
command[ORAOCTM_tablespace-fragmentation2]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-fragmentation --tablespace BASEIDX
command[ORAOCTM_tablespace-fragmentation3]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-fragmentation --tablespace SYSAUX
command[ORAOCTM_tablespace-fragmentation4]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-fragmentation --tablespace SYSTEM
#command[ORAOCTM_tablespace-fragmentatioN5]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-fragmentation --tablespace TEMP
command[ORAOCTM_tablespace-fragmentation6]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-fragmentation --tablespace UNDOTBS1
command[ORAOCTM_tablespace-io-balance1]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-io-balance --tablespace BASEDATA
command[ORAOCTM_tablespace-io-balance2]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-io-balance --tablespace BASEIDX
command[ORAOCTM_tablespace-io-balance3]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-io-balance --tablespace SYSAUX
command[ORAOCTM_tablespace-io-balance4]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-io-balance --tablespace SYSTEM
command[ORAOCTM_tablespace-io-balance5]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-io-balance --tablespace TEMP
command[ORAOCTM_tablespace-io-balance6]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-io-balance --tablespace UNDOTBS1
command[ORAOCTM_tablespace-can-allocate-next1]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-can-allocate-next --tablespace BASEDATA
command[ORAOCTM_tablespace-can-allocate-next2]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-can-allocate-next --tablespace BASEIDX
command[ORAOCTM_tablespace-can-allocate-next3]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-can-allocate-next --tablespace SYSAUX
command[ORAOCTM_tablespace-can-allocate-next4]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-can-allocate-next --tablespace SYSTEM
command[ORAOCTM_tablespace-can-allocate-next5]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-can-allocate-next --tablespace TEMP
command[ORAOCTM_tablespace-can-allocate-next6]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode tablespace-can-allocate-next --tablespace UNDOTBS1
command[ORAOCTM_datafile-io-traffic1]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode datafile-io-traffic --name INDEX01.DBF
command[ORAOCTM_datafile-io-traffic2]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode datafile-io-traffic --name SYSAUX01.DBF
command[ORAOCTM_datafile-io-traffic3]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode datafile-io-traffic --name SYSTEM01.DBF
command[ORAOCTM_datafile-io-traffic4]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode datafile-io-traffic --name TEMP01.DBF
command[ORAOCTM_datafile-io-traffic5]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode datafile-io-traffic --name UNDOTBS01.DBF
command[ORAOCTM_datafile-io-traffic6]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode datafile-io-traffic --name USERS01.DBF
command[ORAOCTM_soft-parse-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode soft-parse-ratio
command[ORAOCTM_switch-interval]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode switch-interval
command[ORAOCTM_retry-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode retry-ratio
command[ORAOCTM_redo-io-traffic]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode redo-io-traffic
command[ORAOCTM_roll-header-contention]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode roll-header-contention
command[ORAOCTM_roll-block-contention]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode roll-block-contention
command[ORAOCTM_roll-hit-ratio]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode roll-hit-ratio
command[ORAOCTM_roll-wraps]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode roll-wraps
command[ORAOCTM_roll-extends]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode roll-extends
command[ORAOCTM_roll-avgactivesize]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode roll-avgactivesize
command[ORAOCTM_seg-top10-logical-reads]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode seg-top10-logical-reads
command[ORAOCTM_seg-top10-physical-reads]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode seg-top10-physical-reads
command[ORAOCTM_seg-top10-buffer-busy-waits]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode seg-top10-buffer-busy-waits
command[ORAOCTM_seg-top10-row-lock-waits]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode seg-top10-row-lock-waits
command[ORAOCTM_event-waits]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode event-waits
command[ORAOCTM_event-waiting]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode event-waiting
command[ORAOCTM_enqueue-contention]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode enqueue-contention
command[ORAOCTM_enqueue-waiting]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode enqueue-waiting
command[ORAOCTM_latch-contention]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode latch-contention
command[ORAOCTM_latch-waiting]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode latch-waiting
command[ORAOCTM_sysstat]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sysstat
command[ORAOCTM_flash-recovery-area-usage]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode flash-recovery-area-usage
command[ORAOCTM_flash-recovery-area-free]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode flash-recovery-area-free
#command[ORAOCTM_sql]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode sql
#command[ORAOCTM_list-tablespaces]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode list-tablespaces
#command[ORAOCTM_list-datafiles]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode list-datafiles
#command[ORAOCTM_list-enqueues]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode list-enqueues
#command[ORAOCTM_list-latches]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode list-latches
#command[ORAOCTM_list-events]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode list-events
#command[ORAOCTM_list-background-events]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode list-background-events
#command[ORAOCTM_list-sysstats]=/usr/local/nagios/libexec/check_oracle_health --connect nagios/super_motdepasse@BASE --mode list-sysstats</pre>
<h2>Conf Nagios pour appeler ces tests NRPE</h2>
<p>La même chose pour le fichier Nagios appelant NRPE :</p>
<pre>define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_connection-time
        check_command check_nrpe_1arg!ORAOCTM_connection-time
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_connected-users
        check_command check_nrpe_1arg!ORAOCTM_connected-users
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_sga-data-buffer-hit-ratio
        check_command check_nrpe_1arg!ORAOCTM_sga-data-buffer-hit-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_sga-library-cache-hit-ratio
        check_command check_nrpe_1arg!ORAOCTM_sga-library-cache-hit-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_sga-dictionary-cache-hit-ratio
        check_command check_nrpe_1arg!ORAOCTM_sga-dictionary-cache-hit-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_sga-latches-hit-ratio
        check_command check_nrpe_1arg!ORAOCTM_sga-latches-hit-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_sga-shared-pool-reload-ratio
        check_command check_nrpe_1arg!ORAOCTM_sga-shared-pool-reload-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_sga-shared-pool-free
        check_command check_nrpe_1arg!ORAOCTM_sga-shared-pool-free
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_pga-in-memory-sort-ratio
        check_command check_nrpe_1arg!ORAOCTM_pga-in-memory-sort-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_invalid-objects
        check_command check_nrpe_1arg!ORAOCTM_invalid-objects
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_stale-statistics
        check_command check_nrpe_1arg!ORAOCTM_stale-statistics
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-usage1
        check_command check_nrpe_1arg!ORAOCTM_tablespace-usage1
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-usage2
        check_command check_nrpe_1arg!ORAOCTM_tablespace-usage2
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-usage3
        check_command check_nrpe_1arg!ORAOCTM_tablespace-usage3
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-usage4
        check_command check_nrpe_1arg!ORAOCTM_tablespace-usage4
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-usage5
        check_command check_nrpe_1arg!ORAOCTM_tablespace-usage5
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-usage6
        check_command check_nrpe_1arg!ORAOCTM_tablespace-usage6
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-remaining-time
        check_command check_nrpe_1arg!ORAOCTM_tablespace-remaining-time
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-fragmentation1
        check_command check_nrpe_1arg!ORAOCTM_tablespace-fragmentation1
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-fragmentation2
        check_command check_nrpe_1arg!ORAOCTM_tablespace-fragmentation2
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-fragmentation3
        check_command check_nrpe_1arg!ORAOCTM_tablespace-fragmentation3
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-fragmentation4
        check_command check_nrpe_1arg!ORAOCTM_tablespace-fragmentation4
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-fragmentation5
        check_command check_nrpe_1arg!ORAOCTM_tablespace-fragmentation5
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-fragmentation6
        check_command check_nrpe_1arg!ORAOCTM_tablespace-fragmentation6
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-io-balance1
        check_command check_nrpe_1arg!ORAOCTM_tablespace-io-balance1
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-io-balance2
        check_command check_nrpe_1arg!ORAOCTM_tablespace-io-balance2
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-io-balance3
        check_command check_nrpe_1arg!ORAOCTM_tablespace-io-balance3
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-io-balance4
        check_command check_nrpe_1arg!ORAOCTM_tablespace-io-balance4
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-io-balance5
        check_command check_nrpe_1arg!ORAOCTM_tablespace-io-balance5
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-io-balance6
        check_command check_nrpe_1arg!ORAOCTM_tablespace-io-balance6
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-can-allocate-next1
        check_command check_nrpe_1arg!ORAOCTM_tablespace-can-allocate-next1
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-can-allocate-next2
        check_command check_nrpe_1arg!ORAOCTM_tablespace-can-allocate-next2
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-can-allocate-next3
        check_command check_nrpe_1arg!ORAOCTM_tablespace-can-allocate-next3
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-can-allocate-next4
        check_command check_nrpe_1arg!ORAOCTM_tablespace-can-allocate-next4
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-can-allocate-next5
        check_command check_nrpe_1arg!ORAOCTM_tablespace-can-allocate-next5
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_tablespace-can-allocate-next6
        check_command check_nrpe_1arg!ORAOCTM_tablespace-can-allocate-next6
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_datafile-io-traffic1
        check_command check_nrpe_1arg!ORAOCTM_datafile-io-traffic1
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_datafile-io-traffic2
        check_command check_nrpe_1arg!ORAOCTM_datafile-io-traffic2
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_datafile-io-traffic3
        check_command check_nrpe_1arg!ORAOCTM_datafile-io-traffic3
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_datafile-io-traffic4
        check_command check_nrpe_1arg!ORAOCTM_datafile-io-traffic4
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_datafile-io-traffic5
        check_command check_nrpe_1arg!ORAOCTM_datafile-io-traffic5
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_datafile-io-traffic6
        check_command check_nrpe_1arg!ORAOCTM_datafile-io-traffic6
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_soft-parse-ratio
        check_command check_nrpe_1arg!ORAOCTM_soft-parse-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_switch-interval
        check_command check_nrpe_1arg!ORAOCTM_switch-interval
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_retry-ratio
        check_command check_nrpe_1arg!ORAOCTM_retry-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_redo-io-traffic
        check_command check_nrpe_1arg!ORAOCTM_redo-io-traffic
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_roll-header-contention
        check_command check_nrpe_1arg!ORAOCTM_roll-header-contention
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_roll-block-contention
        check_command check_nrpe_1arg!ORAOCTM_roll-block-contention
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_roll-hit-ratio
        check_command check_nrpe_1arg!ORAOCTM_roll-hit-ratio
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_roll-wraps
        check_command check_nrpe_1arg!ORAOCTM_roll-wraps
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_roll-extends
        check_command check_nrpe_1arg!ORAOCTM_roll-extends
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_roll-avgactivesize
        check_command check_nrpe_1arg!ORAOCTM_roll-avgactivesize
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_seg-top10-logical-reads
        check_command check_nrpe_1arg!ORAOCTM_seg-top10-logical-reads
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_seg-top10-physical-reads
        check_command check_nrpe_1arg!ORAOCTM_seg-top10-physical-reads
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_seg-top10-buffer-busy-waits
        check_command check_nrpe_1arg!ORAOCTM_seg-top10-buffer-busy-waits
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_seg-top10-row-lock-waits
        check_command check_nrpe_1arg!ORAOCTM_seg-top10-row-lock-waits
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_event-waits
        check_command check_nrpe_1arg!ORAOCTM_event-waits
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_event-waiting
        check_command check_nrpe_1arg!ORAOCTM_event-waiting
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_enqueue-contention
        check_command check_nrpe_1arg!ORAOCTM_enqueue-contention
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_enqueue-waiting
        check_command check_nrpe_1arg!ORAOCTM_enqueue-waiting
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_latch-contention
        check_command check_nrpe_1arg!ORAOCTM_latch-contention
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_latch-waiting
        check_command check_nrpe_1arg!ORAOCTM_latch-waiting
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_sysstat
        check_command check_nrpe_1arg!ORAOCTM_sysstat
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_flash-recovery-area-usage
        check_command check_nrpe_1arg!ORAOCTM_flash-recovery-area-usage
}
define service {
        use generic-service
        host_name srvnrpe
        service_description ORAOCTM_flash-recovery-area-free
        check_command check_nrpe_1arg!ORAOCTM_flash-recovery-area-free
}
</pre>
<h2>Remarques</h2>
<p>J&#8217;ai fait le bourrin : un &laquo;&nbsp;service Nagios&nbsp;&raquo; = un &laquo;&nbsp;appel NRPE&nbsp;&raquo; = un &laquo;&nbsp;lancement de check_oracle_health&nbsp;&raquo;. On doit pouvoir fignoler avec des paramètres et le &laquo;&nbsp;check_nrpe&nbsp;&raquo; normal plutôt que le &laquo;&nbsp;1arg&nbsp;&raquo;-ument.</p>
<p>Enfin, vous pouvez détailler chaque test pour les problèmes de verrous, events etc. La liste est méga longue. Vous pourrez facilement scripter pour obtenir la liste de tous les test si vous êtes un bon gros psychopathe.<br />
A base de :</p>
<pre>check_oracle_health --blabla -mode list-events | awk ...</pre>
<p> et idem pour les sysstats, enqueues, latches etc.<br />
Attention, dans les 3000 tests (de mémoire) et des fichiers de conf Nagios de 10 km de long. C&#8217;est passablement crétin de tout mettre d&#8217;un coup (bon OK, je l&#8217;ai fait quand même, histoire de voir <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) car le serveur Nagios accuse un peu le coup.<br />
Je crois de plus que les tests génériques, genre <code>check_oracle_health --mode event-waits</code> sortent en premier les erreur critiques les plus graves. Pas la peine de descendre dans un détail sans fin de <code>check_oracle_health --blabla --mode event-waits --name 687721825</code> par exemple, ou encore <code>/usr/local/nagios/libexec/check_oracle_health --connect bla/bla@BLA --mode enqueue-waiting --name XR</code>.</p>
<p>Voilà, vous devriez pouvoir sortir un reporting de votre base en 17 tomes, de quoi assomer n&#8217;importe quel patron, emmerder un DBA et vous laisser du temps libre. <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/11/16/nagios-supervision-dune-base-oracle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>libdbd-oracle-perl sur Debian</title>
		<link>http://michauko.org/blog/2010/11/15/libdbd-oracle-perl-sur-debian/</link>
		<comments>http://michauko.org/blog/2010/11/15/libdbd-oracle-perl-sur-debian/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 16:43:58 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[supervision]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[DBD::Oracle]]></category>
		<category><![CDATA[DBI]]></category>
		<category><![CDATA[libdbd-oracle-perl]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[oracle-instantclient-basic]]></category>
		<category><![CDATA[Oracle.pm]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1161</guid>
		<description><![CDATA[J&#8217;ai besoin du module Oracle pour PERL. Fastoche, c&#8217;est le paquet &#171;&#160;libdbd-oracle-perl&#160;&#187;. Manque de bol, il dépend d&#8217;un paquet virtuel (qui n&#8217;existe pas, rapport aux licences non-libres, Debian, et toute cette philosophie). Ledit paquet est &#171;&#160;oracle-instantclient-basic&#160;&#187;. Pas de problème me direz-vous, c&#8217;est le genre de trucs qui traîne chez Oracle. Oui oui, d&#8217;ailleurs je décris [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai besoin du module Oracle pour PERL. Fastoche, c&#8217;est le paquet &laquo;&nbsp;libdbd-oracle-perl&nbsp;&raquo;.<br />
Manque de bol, il dépend d&#8217;un paquet virtuel (qui n&#8217;existe pas, rapport aux licences non-libres, Debian, et toute cette philosophie). Ledit paquet est &laquo;&nbsp;oracle-instantclient-basic&nbsp;&raquo;.</p>
<p>Pas de problème me direz-vous, c&#8217;est le genre de trucs qui traîne chez Oracle.<br />
Oui oui, d&#8217;ailleurs <a href="http://michauko.org/blog/2009/05/07/installer-le-client-oracle-sur-debianlenny-interco-avec-php/">je décris son installation dans un précédent article</a>. Dommage, le paquet ainsi installé est nommé &laquo;&nbsp;oracle-instantclient11.1-basic&nbsp;&raquo; et non &laquo;&nbsp;oracle-instantclient-basic&nbsp;&raquo;.</p>
<p>Après un peu de Google, n&#8217;arrivant pas à forcer l&#8217;installation sans respecter la dépendance, j&#8217;ai choisi d&#8217;installer le module DBD::Oracle (de son petit nom) à la main depuis CPAN (la base des modules PERL pour les autistes adorant PERL <--- troll).<br />
Et là encore, c'est douloureux. Je décris donc ici en bref les commandes à taper pour que ça se fasse tout seul.<br />
Je considère que la doc mentionnée ci-dessus a été suivie, donc vous avez un client Oracle fonctionnel testé avec SQLPlus par exemple.<br />
Let's go.<span id="more-1161"></span></p>
<h1>Symptômes</h1>
<pre>serveur:/# aptitude install libdbd-oracle-perl
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Fait
Lecture des descriptions de tâches... Fait
Les paquets suivants sont CASSÉS :
  libdbd-oracle-perl
0 paquets mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 392ko d'archives. Après dépaquetage, 995ko seront utilisés.
Les paquets suivants ont des dépendances non satisfaites :
  libdbd-oracle-perl: Dépend: oracle-instantclient-basic qui est un paquet virtuel
Impossible de trouver une solution à ces dépendances ! Abandon...
Les paquets suivants sont CASSÉS :
  libdbd-oracle-perl
0 paquets mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de télécharger 392ko d'archives. Après dépaquetage, 995ko seront utilisés.
Il n'a pas été possible de résoudre ces dépendances. Vous pouvez les résoudre vous-même ou taper « n » pour quitter.
Les paquets suivants ont des dépendances non satisfaites :
  libdbd-oracle-perl: Dépend: oracle-instantclient-basic qui est un paquet virtuel
Faut-il résoudre ces dépendances manuellement ? [N/+/-/_/:/?]</pre>
<p>J&#8217;avoue, je n&#8217;ai pas réussi à trouver comment forcer le truc &#8211; si c&#8217;est possible. Car là c&#8217;est bête, c&#8217;est qu&#8217;il ne cherche pas avec le bon nom, si je puis dire. Y&#8217;a bien un bug Debian ouvert, je crois, mais à part 2 mecs qui s&#8217;engueulent, je n&#8217;ai rien vu de constructif.</p>
<h1>PERL : La partie totomatique</h1>
<p>En tant que root, je lance l&#8217;installation de la couche DB de PERL :</p>
<pre>serveur:~# perl -MCPAN -e shell</pre>
<p>Dans ce shell &laquo;&nbsp;perl/cpan&nbsp;&raquo;, je vérifie et constate que mon module DBI n&#8217;est pas installé :</p>
<pre>cpan[1]> m DBI
Module id = DBI
...
    INST_FILE    (not installed)</pre>
<p>Je l&#8217;installe :</p>
<pre>cpan[2]> install DBI</pre>
<p>S&#8217;en suit un long blabla, mais bon, ça s&#8217;installe (normalement <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )<br />
Ensuite, je teste la présence du module DBD::Oracle :</p>
<pre>cpan[3]> m DBD::Oracle
Module id = DBD::Oracle
    DESCRIPTION  Oracle Driver for DBI
    CPAN_USERID  DBIML (DBI Mailing Lists <dbi-users@perl.org>)
    CPAN_VERSION 1.26
    CPAN_FILE    T/TI/TIMB/DBD-Oracle-1.26.tar.gz
    UPLOAD_DATE  2010-10-11
    DSLIP_STATUS MmcO? (mature,mailing-list,C,object-oriented,)
    MANPAGE      DBD::Oracle - Oracle database driver for the DBI module
    INST_FILE    (not installed)</pre>
<p>Et je ne l&#8217;installe pas (car ça déconnera)&#8230; je me contente de le télécharger :</p>
<pre>cpan[4]> get DBD::Oracle
Running get for module 'DBD::Oracle'
CPAN: Data::Dumper loaded ok (v2.121_14)
'YAML' not installed, falling back to Data::Dumper and Storable to read prefs '/root/.cpan/prefs'
CPAN: Digest::SHA loaded ok (v5.45)
CPAN: Compress::Zlib loaded ok (v2.012)
Checksum for /root/.cpan/sources/authors/id/T/TI/TIMB/DBD-Oracle-1.26.tar.gz ok
Scanning cache /root/.cpan/build for sizes
............................................................................DONE
DBD-Oracle-1.26/
DBD-Oracle-1.26/Changes
et blablablablablabla</pre>
<p>On va le compiler juste après.</p>
<h1>Environnement Oracle</h1>
<p>D&#8217;abord, on positionne quelques variables (à adapter suivant votre cas)</p>
<pre>serveur:~# export ORACLE_HOME=/usr/lib/oracle/11.1/client
serveur:~# export PATH=$PATH:$ORACLE_HOME/bin
serveur:~# export LD_LIBRARY_PATH=$ORACLE_HOME/lib</pre>
<h1>PERL : la partie manuelle</h1>
<p>Puis je vais compiler à la main le bestiau :</p>
<pre>serveur:~# cd ~/.cpan/build/&lt;le rep qui va bien où on voit les sources du module&gt;
serveur:~# perl Makefile.PL
serveur:~# make</pre>
<p>Normalement c&#8217;est OK.<br />
On peut tester grâce à une règle Makefile sympatique :</p>
<pre>serveur:~# export ORACLE_USERID="user/pass@tns"
serveur:~# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01base................# Test loading DBI, DBD::Oracle and version
t/01base................ok
t/10general.............ok
        2/30 skipped: various reasons
t/12impdata.............ok
.... blablabla
Repetitive connect/open/close/disconnect:
1 2 3 4 5 6 7 8 9 10 (~0.027 seconds each)
test.pl complete.</pre>
<p>Youhou</p>
<p>On l&#8217;installe et je vérifie que j&#8217;ai enfin le fichier Oracle.pm :</p>
<pre>serveur:~# make install
serveur:~# find /usr/local/lib/perl/ -name "Oracle.pm"
/usr/local/lib/perl/5.10.0/DBD/Oracle.pm
</pre>
<p>Ayé, ça marche<br />
Tout ça pour quoi au fait ??? ah oui, installer un p&#8217;tit plug-in 3rd-party pour Nagios, qui vérifie une palanquée d&#8217;indicateurs Oracle.<br />
Oui, c&#8217;est probablement le prochain article à venir.</p>
<p>A part ça, je n&#8217;aime pas trop cette méthode car on installer un bout de PERL comme des cochons. Alors la logique des paquets Debian en prend forcément un coup. On verra ça à l&#8217;upgrade. Quitte à refaire la même chose avec &laquo;&nbsp;la version à jour du moment&nbsp;&raquo;.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/11/15/libdbd-oracle-perl-sur-debian/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Garmin Foretrex 401 : mon guide d&#8217;utilisation</title>
		<link>http://michauko.org/blog/2010/10/31/garmin-foretrex-401-mon-guide-dutilisation/</link>
		<comments>http://michauko.org/blog/2010/10/31/garmin-foretrex-401-mon-guide-dutilisation/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 20:04:14 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[hors sujet]]></category>
		<category><![CDATA[calculitineraires.fr]]></category>
		<category><![CDATA[foretrex 401]]></category>
		<category><![CDATA[garmin]]></category>
		<category><![CDATA[gmap-pedometer.com]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[GPX]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1159</guid>
		<description><![CDATA[Voilà une explication qui tient compte des limitations de l&#8217;appareil, afin de planifier un itinéraire dans cette superbe montre qu&#8217;est le Garmin Foretrex 401. Avec sa fonction GPS et boussole, vous pouvez vous planifier des courses de dingue sans trop de risque d&#8217;être perdu. Sauf panne de piles&#8230; Quand je prépare un trajet, y&#8217;a 2 [...]]]></description>
			<content:encoded><![CDATA[<p>Voilà une explication qui tient compte des limitations de l&#8217;appareil, afin de planifier un itinéraire dans cette superbe montre qu&#8217;est le Garmin Foretrex 401.<br />
Avec sa fonction GPS et boussole, vous pouvez vous planifier des courses de dingue sans trop de risque d&#8217;être perdu. Sauf panne de piles&#8230;<span id="more-1159"></span></p>
<p>Quand je prépare un trajet, y&#8217;a 2 choix : soit c&#8217;est un trajet facile (ville, petites forêts, champs, chemins etc) que je connais dans les grandes lignes, soit c&#8217;est pleine montagne et à l&#8217;inconnu et il faut faire attention pour éviter de devoir grimper une falaise (ou en tomber <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>Dans le premier cas, je me contente du site <a href="http://www.gmap-pedometer.com">gmap-pedometer.com</a> qui reprend google mais permet d&#8217;y placer des bouts de segments &laquo;&nbsp;tout droits&nbsp;&raquo; au lieu de suivre les chemins. Car google ne connait pas les chemins piétons (pas tous du moins, loin de là). C&#8217;est très bien quand &laquo;&nbsp;tu sais qu&#8217;ici ça passe&nbsp;&raquo;. A la fin, tu sauvegardes ton trajet et garde l&#8217;url dans un coin. L&#8217;interface du site est pas terrible, mais bon, une fois que tu as trouvé les 2/3 options pour placer les points, c&#8217;est OK.<br />
A la fin, tu génères ton fichier GPX avec un script qu&#8217;il fournisse (c&#8217;est un peu tordu là aussi). Il faut le générer au format &laquo;&nbsp;route&nbsp;&raquo; (par défaut) et pas au format &laquo;&nbsp;points&nbsp;&raquo; ni &laquo;&nbsp;track&nbsp;&raquo; (tu comprendras à l&#8217;usage). Le GPX est un fichier XML avec des points entre des balises &laquo;&nbsp;rtept&nbsp;&raquo; (route point). J&#8217;y reviens plus tard car je recommande de le trafiquer (voir plus bas) à cause de limitations dans le suivi d&#8217;itinéraires du garmin 401.<br />
Fais toi un mini-trajet sur le site histoire de comprendre.</p>
<p>Si maintenant il ne faut pas te perdre du tout et éviter de sauter une falaise car les vues aériennes google ont leur limite, j&#8217;ai opté pour la carte IGN papier pour un bon repérage, voir les GR etc. MAIS : pour recouper entre gmap-pedometer et la carte papier, parfois c&#8217;est pas simple. Du coup j&#8217;ai trouvé http://www.calculitineraires.fr/ (attention au &laquo;&nbsp;s&nbsp;&raquo;) qui permet de superposer la vue google ET la carte IGN. Là c&#8217;est top, à la fin tu génères un fichier GPX, que là aussi tu trafiques de la même manière (voir ci-dessous). Je ne sais pas comment fait ce site pour proposer ça gratuitement d&#8217;ailleurs vu que l&#8217;IGN ne propose pas ses cartes en ligne gratuitement.</p>
<p>Bref, à la fin tu as un fichier GPX quelque part sur ton disque.<br />
Il faut encore le travailler un peu et l&#8217;injecter dans le garmin avant de pouvoir &laquo;&nbsp;suivre l&#8217;itinéraire&nbsp;&raquo;.<br />
Pour le travailler, il suffit de l&#8217;ouvrir dans un éditeur de texte de base.</p>
<p>En effet, déjà le garmin est limité à 500 points au total pour un ou plusieurs itinéraires. Déjà il faudra éviter de faire calculer trop de tracés automatiquement à google dans gmap-pedometer, par exemple, car il va vite te sortir facilement 5 ou 6 points pour traverser un rond-point (en marquant bien la rotation, si tu veux) alors que toi, si tu vas en face, tu ne mettras même pas de point.</p>
<p>Ensuite, lorsque tu &laquo;&nbsp;suis&nbsp;&raquo; un itinéraire, dans le garmin, la montre trace des segments entre les points. C&#8217;est bien pratique à plus d&#8217;un titre. MAIS, va savoir pourquoi, il ne trace pas au-delà du 125è point d&#8217;un itinéraire&#8230;.<br />
Donc, je recopie mon fichier GPX en plusieurs exemplaires (un par lot de 120 points) et ensuite j&#8217;édite. Sinon à la base ils auront le même nom, pas terrible <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Déjà, dans la balise <rte><name> je mets un nom court type &laquo;&nbsp;traj-part1&#8243; puis part2 etc. Afin de les différencier lorsque tu les choisis dans la montre.<br />
Ensuite, je renomme les points qu&#8217;il a tous appelé &laquo;&nbsp;Point 1&#8243;, &laquo;&nbsp;Point 2&#8243; etc, car ça prend une place de dingue sur l&#8217;écran, parfois on ne voit plus rien (pour peu que tu mettes une échelle genre 120m sur la montre). Je les renomme P1, P2 etc.<br />
Enfin, bah après le point 120, je fais sauter toutes les balises marquant les points suivants, mais attention à ne pas bousiller la fin du fichier XML, donc à laisser la fin &laquo;&nbsp;</rte></gpx>&nbsp;&raquo; qui ferme le fichier.<br />
Dans ton 2è fichier, tu commenceras à P121 etc&#8230; en faisant donc sauter les 120 premiers points.</p>
<p>Enfin, tu mets le fichier GPX par liaison USB dans la montre, dans le répertoire <racine>\gpx\current (de tête)<br />
Tu testes : à l&#8217;allumage, si tu vas dans le dernier menu, tu verras des checkpoints (P1, P2, P3 etc) et si tu cherches les itinéraires, tu verras tes trajet-part1, trajet-part2 etc. Tu sélectionnes le premier, indique dans quel sens il faut aller (vers le P120 si t&#8217;as bien suivi) et zou, c&#8217;est parti.</p>
<p>Une fois ta course terminée, que tu as sauvé ta perf sur garmin connect, pense à tout virer, les checkpoints, les itinéraires etc. Sinon la montre va être vite pleine.</p>
<p>Voilà, c&#8217;est complet, y&#8217;a plus qu&#8217;à tester sur un mini-truc histoire de voir. Je recommande d&#8217;ailleurs de s&#8217;habituer au &laquo;&nbsp;suivi d&#8217;itinéraire&nbsp;&raquo; sur un truc connu avant la grande aventure <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>A la fin, nettoyer la montre en virant les chkpt, les itinéraires etc. Sinon elle sera vite pleine pour le coup d&#8217;après.</p>
<p>Bonnes courses !</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/31/garmin-foretrex-401-mon-guide-dutilisation/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Lancer un binaire 32 bits sur une Debian 64 bits</title>
		<link>http://michauko.org/blog/2010/10/31/lancer-un-binaire-32-bits-sur-une-debian-64-bits/</link>
		<comments>http://michauko.org/blog/2010/10/31/lancer-un-binaire-32-bits-sur-une-debian-64-bits/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 18:57:49 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[coup de coeur]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[32 bits]]></category>
		<category><![CDATA[64 bits]]></category>
		<category><![CDATA[ia32-libs]]></category>
		<category><![CDATA[tsmuxer]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1157</guid>
		<description><![CDATA[Hop, J&#8217;ai un serveur assez puissant sous la main, pratique pour &#171;&#160;remuxer&#160;&#187; du gros fichier rapidement. Je vous passe les détails Bref, voilà que je lance tsMuxerGUI à distance (via un déport d&#8217;affichage) et plouf, rien. Pas un message d&#8217;erreur, rien dans les logs, j&#8217;ai mis quelques instants à comprendre pourquoi le programme ne se [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,</p>
<p>J&#8217;ai un serveur assez puissant sous la main, pratique pour &laquo;&nbsp;remuxer&nbsp;&raquo; du gros fichier rapidement. Je vous passe les détails <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Bref, voilà que je lance <a href="http://www.google.fr/search?q=tsmuxer">tsMuxerGUI</a> à distance (via un déport d&#8217;affichage) et plouf, rien. Pas un message d&#8217;erreur, rien dans les logs, j&#8217;ai mis quelques instants à comprendre pourquoi le programme ne se lançait pas. Alors que le même binaire tourne habituellement bien sur mes autres machines.<br />
Avant de me rappeler que le serveur était en 64 bits. Bah oui, du 32 bits sur une machine 64 bits, de base, ça passe pas hyper bien <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mais je tenais à trouver une solution simple.<span id="more-1157"></span></p>
<p>Alors, la chance dans l&#8217;histoire est que le binaire en question est &laquo;&nbsp;linké&nbsp;&raquo; statiquement (donc il embarque toutes ses éventuelles bibliothèques), la malchance est qu&#8217;il n&#8217;est pas fourni par l&#8217;éditeur en précompilé 64 bits. Reste l&#8217;option où je compile le truc (ahah, c&#8217;est [potentiellement] chiant), car les sources sont accessibles.</p>
<p>Donc, après un peu de Google, j&#8217;ai trouvé les merveilleux paquets &laquo;&nbsp;ia32-libs&nbsp;&raquo; et, dans le doute, ia32-libs-gtk (vu qu&#8217;il s&#8217;agit d&#8217;une application graphique en GTK, je crois). Ces paquets apportent le minimum pour lancer des binaires 32 bits sur un OS 64 bits, type amd64 ou ia64. Là j&#8217;ai un Xeon machin 64 et la Debian qui va avec.<br />
Ca a suffit pour que le binaire tourne. Hop, joie !</p>
<p>Gardez donc ces paquets dans un coin de vos têtes <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/31/lancer-un-binaire-32-bits-sur-une-debian-64-bits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMESXi 4.0, accès root et authentification par clef SSH</title>
		<link>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/</link>
		<comments>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 08:42:36 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[datastore]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unsupported]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1151</guid>
		<description><![CDATA[Hello, Ce qui suit était valable jusqu&#8217;à ESXi 4.0. Je n&#8217;ai pas regardé en 4.1 pour l&#8217;instant. Vous me direz (ou moi plus tard). Cet article explique comment activer le serveur SSH sur un hôte VMWare ESXi 4.0 et comment mettre en place un &#171;&#160;authorized_keys&#160;&#187; durable (car le home du root saute à chaque reboot). [...]]]></description>
			<content:encoded><![CDATA[<p>Hello,</p>
<p>Ce qui suit était valable jusqu&#8217;à ESXi 4.0. Je n&#8217;ai pas regardé en 4.1 pour l&#8217;instant. Vous me direz (ou moi plus tard).<br />
Cet article explique comment activer le serveur SSH sur un hôte VMWare ESXi 4.0 et comment mettre en place un &laquo;&nbsp;authorized_keys&nbsp;&raquo; durable (car le home du root saute à chaque reboot). Je présente aussi rapidement quelques trucs indispensables pour se promener dans l&#8217;hôte.<br />
L&#8217;intérêt de la chose est de pouvoir lancer directement certaines commandes depuis un serveur ESXi via une session SSH et aussi, pour l&#8217;authentification par clef, de scripter certaines choses. Par exemple l&#8217;arrêt / copie des fichiers vmdk / relance de serveurs pour automatiser des full backup offline.</p>
<p>Let&#8217;s go!<span id="more-1151"></span></p>
<h1>Activation du SSH</h1>
<p>Ce n&#8217;est pas supporté par VMWare, mais ça existe quand même. On se demande bien pourquoi <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Sur la console de votre hôte, vous appuyez sur ALT-F1 pour passer sur une session console &laquo;&nbsp;habituelle&nbsp;&raquo; du monde Linux.<br />
Là, en aveugle (pas d&#8217;écho à l&#8217;écran), vous tapez &laquo;&nbsp;unsupported&nbsp;&raquo;, sans les guillemets bien sûr et validez par la touche &laquo;&nbsp;Entrée&nbsp;&raquo;.<br />
Vous obtiendrez une demande de mot de passe, le pass de votre compte root.<br />
Ca y est, vous êtes connecté à la console.<br />
Vous pouvez alors aller éditer le fichier <code>/etc/inetd.conf</code>, avec l&#8217;éditeur &laquo;&nbsp;<code>vi</code>&nbsp;&raquo; et décommenter la ligne SSH en IPv4.<br />
Ensuite, soit vous redémarrez le serveur, soit vous redémarrez <code>inetd</code>.<br />
Testez votre connexion SSH depuis un autre ordi, histoire de valider.</p>
<h1>Et maintenant ?</h1>
<p>Super, je peux faire du SSH sur le serveur, mais pour quoi faire ?<br />
Personnellement, il m&#8217;arrive de déplacer des machines virtuelles d&#8217;un serveur à l&#8217;autre, dont les fichiers vmdk ne sont pas sur un SAN partagé. Plutôt que de super-galérer avec le &laquo;&nbsp;vSphere Client&nbsp;&raquo; -> &laquo;&nbsp;Browse datastore&nbsp;&raquo; -> etc, je préfère faire faire quelques &laquo;&nbsp;scp&nbsp;&raquo; par exemple.<br />
Et surtout, vous pouvez faire tout ce que permet &laquo;&nbsp;vSphere Client&nbsp;&raquo; mais en mode texte. Bref, parfois, c&#8217;est pratique.</p>
<h2>vim-cmd</h2>
<p>L&#8217;outil essentiel est la command &laquo;&nbsp;<code>vim-cmd</code>&nbsp;&raquo; (rien à voir avec &laquo;&nbsp;VIm&nbsp;&raquo;), documentez-vous dessus.<br />
Commencez par taper &laquo;&nbsp;<code>vim-cmd</code>&nbsp;&raquo; tout seul, puis &laquo;&nbsp;<code>vim-cmd vmsvc/</code>&nbsp;&raquo; par exemple. Les noms de fonctions sont souvent éloquents.</p>
<p>Vous pourrez par exemple :</p>
<ul>
<li>
obtenir la liste des VM : vim-cmd vmsvc/getallvms
</li>
<li>
obtenir l&#8217;état d&#8217;une VM : vim-cmd vmsvc/power.getstate &lt;ID&gt;
</li>
<li>
en arrêter proprement une (pas &laquo;&nbsp;électriquement&nbsp;&raquo;) : vim-cmd vmsvc/power.off &lt;ID&gt;
</li>
<li>
en rallumer une : vim-cmd vmsvc/power.on &lt;ID&gt;
</li>
</ul>
<p>etc&#8230;</p>
<h2>Stockage des machines virtuelles</h2>
<p>Dans <code>/vmfs/volumes/</code>, vous trouverez les noms de code de vos &laquo;&nbsp;datastores&nbsp;&raquo; et des liens symboliques pointant vers ces noms pourris, histoire de s&#8217;y retrouver. Ces liens sont les noms que vous avez affecté via &laquo;&nbsp;vSphere Client&nbsp;&raquo;.<br />
De là, vous allez vite retrouver vos fichiers vmdk &#038; co.</p>
<h1>authorized_keys</h1>
<p>Si vous avez besoin de stocker dans le home du root (qui est &laquo;&nbsp;/&nbsp;&raquo; et non un habituel &laquo;&nbsp;/root&nbsp;&raquo;) un fichier &laquo;&nbsp;~/.ssh/authorized_keys&nbsp;&raquo;, sachez qu&#8217;il saute à chaque reboot.<br />
Ce que j&#8217;ai fait pour contrer celà, c&#8217;est d&#8217;ajouter au script &laquo;&nbsp;/etc/rc.local&nbsp;&raquo; la recopie de ce fichier stocké au préalable dans un &laquo;&nbsp;datastore&nbsp;&raquo; local.<br />
Ca donne :</p>
<pre>~ # tail /etc/rc.local
         if [ -f $filename ] &#038;&#038; [ -x $filename ]; then
            log "running $filename"
            $filename
         fi
      done
fi

<strong>mkdir /.ssh
cd /vmfs/volumes/DataStoreLocal/pour_reboot/.ssh/
cp authorized_keys /.ssh/</strong></pre>
<p>J&#8217;avais d&#8217;abord créé ce fameux &laquo;&nbsp;pour_reboot&nbsp;&raquo; + le répertoire &laquo;&nbsp;.ssh/&nbsp;&raquo; + le fichier &laquo;&nbsp;authorized_keys&nbsp;&raquo; dans le datastore qui va bien (ce n&#8217;est pas son nom d&#8217;origine, c&#8217;est plutôt &laquo;&nbsp;datastore1&#8243; sur une machine fraîchement installée).</p>
<p>Et voilà, avec un accès SSH, un hôte ESXi ressemble quand même plus à quelque chose, non ? <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/28/vmesxi-4-0-acces-root-et-authentification-par-clef-ssh/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>postfix, utilisateurs virtuels et appels à procmail</title>
		<link>http://michauko.org/blog/2010/10/25/postfix-utilisateurs-virtuels-et-appels-a-procmail/</link>
		<comments>http://michauko.org/blog/2010/10/25/postfix-utilisateurs-virtuels-et-appels-a-procmail/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 09:30:33 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[master.cf]]></category>
		<category><![CDATA[NEXTHOP]]></category>
		<category><![CDATA[pipe]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[procmail]]></category>
		<category><![CDATA[procmailrc]]></category>
		<category><![CDATA[vacation]]></category>
		<category><![CDATA[virtuel]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1139</guid>
		<description><![CDATA[Hello, Dans un précédent article, j&#8217;avais expliqué comment faire en sorte qu&#8217;une installation postfix/amavis/&#8230;/mysql &#8211; avec donc des domaines et des utilisateurs virtuels &#8211; puisse faire appeler &#171;&#160;procmail&#160;&#187; afin de passer le relai à &#171;&#160;vacation&#160;&#187;, l&#8217;outil de répondeur automatique d&#8217;absence. Depuis, j&#8217;ai trouvé plus élégant pour passer des règles plus complètes à procmail (quitte à [...]]]></description>
			<content:encoded><![CDATA[<p>Hello,<br />
Dans un précédent article, j&#8217;avais expliqué comment faire en sorte qu&#8217;une installation postfix/amavis/&#8230;/mysql &#8211; avec donc des domaines et des utilisateurs virtuels &#8211; puisse faire appeler &laquo;&nbsp;procmail&nbsp;&raquo; afin de passer le relai à &laquo;&nbsp;vacation&nbsp;&raquo;, l&#8217;outil de répondeur automatique d&#8217;absence.<br />
Depuis, j&#8217;ai trouvé plus élégant pour passer des règles plus complètes à procmail (quitte à envoyer à vacation ensuite). C&#8217;est juste beaucoup plus joli et mieux construit. J&#8217;explique &#8211; toujours en partant d&#8217;une conf postfix/amavis/mysql comme celle que je décris dans <a href="http://michauko.org/blog/?s=postfix">des précédents articles</a>.<span id="more-1139"></span></p>
<h1>Principe</h1>
<p>On va créer une voie de transport dans postfix afin de &laquo;&nbsp;router&nbsp;&raquo; les messages de certains utilisateurs vers un pipe particulier appelant procmail dans sa forme à peu près basique.<br />
&laquo;&nbsp;procmail&nbsp;&raquo; tournera au nom de l&#8217;utilisateur gérant les &laquo;&nbsp;Maildir&nbsp;&raquo; virtuels, utilisateur &laquo;&nbsp;vmail&nbsp;&raquo; (dans mes docs précédentes) et lira un procmail général avant de passer le relai à un procmail par utilisateur (si besoin), pour trier. En décrivant proprement l&#8217;environnement pour procmail, on livrera où il faut dans un Maildir sous &laquo;&nbsp;vmail&nbsp;&raquo;, donc dans un Maildir d&#8217;un domain virtuel pour un utilisateur virtuel dans un sous-répertoire de sa boîte Maildir.<br />
Mouais, bon, c&#8217;est pas hyper clair, mais ça va le devenir <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>pipe postfix</h1>
<p>Dans <code>/etc/postfix/master.cf</code>, on déclare le &laquo;&nbsp;pipe suivant&nbsp;&raquo; :</p>
<pre>procmailpipe    unix    -       n       n       -       10      pipe
  flags=ROq user=vmail argv=/usr/bin/procmail --m USER=${user} EXTENSION=${extension} NEXTHOP=${nexthop} /etc/postfix/procmail.global.rc</pre>
<p>Bien noter le &laquo;&nbsp;NEXTHOP&nbsp;&raquo; qui nous indiquera le domaine (pratique lorsqu&#8217;on en gère plusieurs en virtuel.<br />
Je rappelle que dans ma conf, l&#8217;utilisateur hébergeant les boites mails est &laquo;&nbsp;vmail&nbsp;&raquo;, dont le home est <code>/vmailboxes/</code>. On trouve donc là-dedans des répertoires comme <code>/vmailboxes/mon_domaine.com/mon_user/cur|tmp|new</code> et autres sous répertoires commençant par <code>.sous-rep/[cur|new|tmp]/</code>.<br />
Pour accompagner le flag &laquo;&nbsp;O&nbsp;&raquo; dans ce pipe, la doc postfix indique de bien positionner dans le <code>/etc/postfix/main.cf</code> :</p>
<pre>procmail_destination_recipient_limit = 1</pre>
<h1>Alias d&#8217;un utilisateur vers son procmail</h1>
<p>Dans mes tables SQL (à priori &laquo;&nbsp;transport&nbsp;&raquo; et &laquo;&nbsp;forwardings&nbsp;&raquo;), j&#8217;indique ceci :</p>
<pre>transport : procmail.mon_domaine.com => procmailpipe
forwardings : mon_user@mon_domaine.com => mon_user@procmail.mon_domaine.com</pre>
<p>Ainsi, un mail arrive à mon_user@mon_domaine.com suivra vers mon_user@procmail.mon_domaine.com (qui n&#8217;existe pas au sens DNS) et sera donc routé vers le &laquo;&nbsp;pipe&nbsp;&raquo; postfix nommé &laquo;&nbsp;procmailpipe&nbsp;&raquo; décrit dans <code>master.cf</code>.</p>
<h1>procmailrc global</h1>
<p>Le &laquo;&nbsp;pipe&nbsp;&raquo; postfix ira lire <code>/etc/postfix/procmail.global.rc</code> en passant quelques variables comme on l&#8217;a vu.<br />
Dans ce fichier, on trouve exactement ça :</p>
<pre>serveur:~# cat /etc/postfix/procmail.global.rc
SHELL=/bin/sh
MAILDIR="$HOME/$NEXTHOP/$USER"
DEFAULT="$MAILDIR/"
#VERBOSE=ON
#LOGFILE="$HOME/procmail/$NEXTHOP.$USER.log"
NL="
"
WS=" "
SWITCHRC="$HOME/procmail/$NEXTHOP.$USER.rc"
</pre>
<p>Pour NL et WS, c&#8217;est une question de séparateur de mot, de ligne etc. (je crois <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )<br />
Pour VERBOSE et LOGFILE, vous activerez au début quand ça ne fonctionnera pas, afin de pouvoir déverminer.<br />
<strong>Toute la beauté du bazar réside en fait dans le &laquo;&nbsp;MAILDIR&nbsp;&raquo; et &laquo;&nbsp;SWITCHRC&nbsp;&raquo;.</strong><br />
Dans mon exemple, MAILDIR vaudra :</p>
<pre>$HOME = home de vmail = <code>/vmailboxes</code>
$NEXTHOP = procmail.mon_domaine.com
$USER = mon_user
</pre>
<p>Enfin, on ira lire un fichier procmailrc par utilisateur. Si on ne trouve pas de fichier &laquo;&nbsp;<code>/vmailboxes/procmail/procmail.mon_domaine.com.mon_user.rc</code>&laquo;&nbsp;, on finira donc directement dans une MAILDIR nommée &laquo;&nbsp;<code>/vmailboxes/procmail.mon_domaine.com/mon_user/</code>&nbsp;&raquo; (attention au &laquo;&nbsp;/&nbsp;&raquo; de fin dans DEFAULT pour indiquer un format Maildir et pas mailbox). Presque parfait me direz-vous car dans mes domaines virtuels hébergés, j&#8217;avais prévu &laquo;&nbsp;<code>/vmailboxes/mon_domaine.com</code>&nbsp;&raquo; et pas &laquo;&nbsp;<code>procmail.mon_domaine</code>&laquo;&nbsp;.<br />
Je n&#8217;ai pas trouvé de variable type NEXTHOP rappelent le domaine d&#8217;origine. Par contre un lien symbolique de &laquo;&nbsp;<code>/vmailboxes/procmail.mon_domaine.com/</code>&nbsp;&raquo; vers &laquo;&nbsp;<code>/vmailboxes/mon_domaine.com/</code>&nbsp;&raquo; règle joliment le problème.</p>
<h1>Enfin, procmailrc par utilisateur</h1>
<p>J&#8217;ai donc regroupé mes différents procmailrc dans <code>/vmailboxes/procmail/</code><br />
Ces fichiers contiendront donc des règles procmail habituelles, en considérant pour &laquo;&nbsp;MAILDIR/DEFAULT&nbsp;&raquo; de travail, qu&#8217;on est bien placé dans &laquo;&nbsp;<code>/vmailboxes/[procmail.]mon_domaine.com/mon_user/</code>&laquo;&nbsp;. Ainsi :</p>
<pre>:0
* Subject:.*testprocmail
.test/</pre>
<p>&#8230;ira bien placer votre mail dans le sous-répertoire &laquo;&nbsp;test&nbsp;&raquo; de l&#8217;utilisateur. Donc dans &laquo;&nbsp;<code>/vmailboxes/mon_domaine.com/mon_user/.test/new/</code>&nbsp;&raquo;</p>
<h1>Débuggage</h1>
<p>Pendant la phase de tests, notez que les mails allant dans des Maildir n&#8217;existant pas finiront dans le home de l&#8217;utilisateur &laquo;&nbsp;vmail&nbsp;&raquo;. Donc, vous verrez peut-être apparaître <code>/vmailboxes/[cur|new|tmp]</code> et pourrez aller à la pêche.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/25/postfix-utilisateurs-virtuels-et-appels-a-procmail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Changer son mot de passe dans roundcubemail+postfix+utilisateurs virtuels</title>
		<link>http://michauko.org/blog/2010/10/07/changer-son-mot-de-passe-dans-roundcubemailpostfixutilisateurs-virtuels/</link>
		<comments>http://michauko.org/blog/2010/10/07/changer-son-mot-de-passe-dans-roundcubemailpostfixutilisateurs-virtuels/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 15:42:02 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[roundcube]]></category>
		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1126</guid>
		<description><![CDATA[Dans la lignée des articles suivant : Montage d&#8217;un serveur complet postfix et outils annexes &#8230;en y ajoutant des domaines et utilisateurs virtuels &#8230;et à la limite un répondeur (vacation) sur des utilisateurs virtuels &#8230;en oubliant la partie roundcubemail (facile à installer, j&#8217;ai pas fait d&#8217;article, désolé) Voici maintenant comment &#171;&#160;configurer et activer le plugin [...]]]></description>
			<content:encoded><![CDATA[<p>Dans la lignée des articles suivant :</p>
<ul>
<li>
<a href="http://michauko.org/blog/2009/09/21/montage-dun-serveur-de-mail-complet-postfix-postgrey-amavisd-new-clamav-spamassassin-etc/">Montage d&#8217;un serveur complet postfix et outils annexes</a>
</li>
<li>
<a href="http://michauko.org/blog/2009/10/20/postfix-utilisateurs-virtuels-mysql-acces-pop3s-imaps-sasl-et-tls-quota-bingo-jai-tout-mis-dans-le-titre/">&#8230;en y ajoutant des domaines et utilisateurs virtuels</a>
</li>
<li>
<a href="http://michauko.org/blog/2010/06/16/utilisateurs-postfix-virtuels-ajouter-un-repondeur-vacation/">&#8230;et à la limite un répondeur (vacation) sur des utilisateurs virtuels</a>
</li>
<li>
&#8230;en oubliant la partie roundcubemail (facile à installer, j&#8217;ai pas fait d&#8217;article, désolé)
</li>
</ul>
<p>Voici maintenant comment &laquo;&nbsp;<strong>configurer et activer le plugin de changement de mot de passe dans roundcubemail (actuellement v0.4) sur des utilisateurs virtuels (SQL)</strong>&laquo;&nbsp;. Depuis la 0.4, le plugin est intégré et propre. Pas la peine d&#8217;ajouter du code PHP un peu partout.<br />
Notez que le plugin est modulaire et gère des &laquo;&nbsp;drivers&nbsp;&raquo; pour l&#8217;authentification : sql, ldap, poppassd, cyrus/SASL etc.<br />
Allez, let&#8217;s go!<span id="more-1126"></span></p>
<p>Vu que j&#8217;avais eu quelques déboires avec les vieilles versions de roundcube, je suis parti sur la dernière release stable du site officiel, pas d&#8217;une version packagée Debian.</p>
<p>Toute la doc tient dans un README simpliste, dans vos sources roundcubemail, fichier <code>/plugins/password/README</code>. Mon article applique ceci en expliquant un peu plus&#8230;</p>
<p>Je considère que vous partez d&#8217;une configuration d&#8217;utilisateurs virtuels comme décrite dans mes docs mentionnés en haut de l&#8217;article. Sinon il faut adapter et je ne peux pas prédire ce que vous devez écrire <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Dans vos sources roundcube, renommez/copiez le fichier <code>/plugins/password/config.inc.php.dist</code> en <code>/plugins/password/config.inc.php</code> et modifiez uniquement ce qui suit :</p>
<pre>$rcmail_config['password_db_dsn'] = 'mysql://admin:son_pass@localhost/ma_base';
$rcmail_config['password_query'] = 'UPDATE ma_base.users SET password=ENCRYPT(%p) WHERE email=%u LIMIT 1';</pre>
<p>Dans <code>password_db_dsn</code>, on indique la base de données des utilisateurs virtuels. Puisque l&#8217;outil roundcube bosse sur SA base de données, il faudra bien qu&#8217;il aille voir autre part. A vous de voir si vous lui donnez l&#8217;accès admin à votre base ou un compte sur mesure capable de faire des UPDATE uniquement sur la table des utilisateurs. Ca ou tous les droits, c&#8217;est pas foncièrement différent me direz-vous.<br />
Dans <code>password_query</code>, on indique la requête d&#8217;UPDATE. Remarques :</p>
<ul>
<li>
Non, pas la peine d&#8217;ajouter un &laquo;&nbsp;WHERE&#8230; AND password = ENCRYPT(%o)&nbsp;&raquo; pour soit disant contrôler que l&#8217;ancien pass est le bon. D&#8217;une part c&#8217;est contrôlé au niveau de la session PHP via une fonction &laquo;&nbsp;decrypt&nbsp;&raquo; (cherchez dans le code) et d&#8217;autre part, ENCRYPT ne produit pas nécessairement le même résultat pour un pass donné, l&#8217;histoire du &#8216;salt&#8217;, aléatoire lorsqu&#8217;on ne le précise pas (amha).
</li>
<li>
On limite à 1 par sécurité et aussi car le plugin gueule s&#8217;il n&#8217;a pas modifié qu&#8217;une ligne. En même temps, il a raison <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</li>
<li>
Je préfère forcer le nom complet &laquo;&nbsp;ma_base.users&nbsp;&raquo; pour éviter une erreur, si 2 tables avaient le même nom dans les 2 bases, je pense</li>
</ul>
<p>J&#8217;ai passé sous silence ces 2 paramètres déjà OK de base :</p>
<pre>$rcmail_config['password_driver'] = 'sql';
$rcmail_config['password_confirm_current'] = true;</pre>
<p>Enfin, on active le plugin dans la conf principale, fichier <code>config/main.inc.php</code> :</p>
<pre>$rcmail_config['plugins'] = array('password');</pre>
<p>Voilà, c&#8217;est tout. Rechargez la page des préférences sur roundcube. Tout ceci étant en PHP, c&#8217;est dynamique et vous verrez l&#8217;onglet de changement de mot de passe, et il devrait fonctionner <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://michauko.org/blog/wp-content/uploads/2010/10/rcube_password.png"><img src="http://michauko.org/blog/wp-content/uploads/2010/10/rcube_password.png" alt="" title="rcube_password" width="636" height="241" class="aligncenter size-full wp-image-1134" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/10/07/changer-son-mot-de-passe-dans-roundcubemailpostfixutilisateurs-virtuels/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PS3mediaserver sur une Debian toute fraîche : serveur DLNA/uPNP/bidule pour la PS3</title>
		<link>http://michauko.org/blog/2010/09/29/ps3mediaserver-sur-une-debian-toute-fraiche-serveur-dlnaupnpbidule-pour-la-ps3/</link>
		<comments>http://michauko.org/blog/2010/09/29/ps3mediaserver-sur-une-debian-toute-fraiche-serveur-dlnaupnpbidule-pour-la-ps3/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 09:40:14 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[autres outils]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[PS3]]></category>
		<category><![CDATA[DLNA]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[mencoder]]></category>
		<category><![CDATA[mplayer]]></category>
		<category><![CDATA[PS3mediaserver]]></category>
		<category><![CDATA[tsmuxer]]></category>
		<category><![CDATA[uPNP]]></category>
		<category><![CDATA[VLC]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1108</guid>
		<description><![CDATA[Hop, J&#8217;ai rangé mon NAS (qui trainait en terme de firmware et ne me permettait pas de lire des photos de + de 12 Mpixels&#8230;) au profit d&#8217;un vieux PC avec une Debian et PS3 Media Server (PMS) comme interface entre la PS3 et mes &#171;&#160;fichiers multimédia&#160;&#187;. Le principe de PMS est simple : utiliser [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,</p>
<p>J&#8217;ai rangé mon NAS (qui trainait en terme de firmware et ne me permettait pas de lire des photos de + de 12 Mpixels&#8230;) au profit d&#8217;un vieux PC avec une Debian et PS3 Media Server (PMS) comme interface entre la PS3 et mes &laquo;&nbsp;fichiers multimédia&nbsp;&raquo;.</p>
<p>Le principe de PMS est simple : utiliser tous les outils standards du monde libre (ffmpeg, mplayer, mencoder, vlc, tsmuxer) qui font déjà bien le boulot et simplement ajouter une surcouche (en Java, why not) pour faire l&#8217;interface DLNA / uPNP (je confonds un peu les 2, on s&#8217;en tape). Le but est de lire tout ça depuis la PS3.<br />
Encore mieux, il permet de présenter à la PS3 des formats qu&#8217;elle ne sait pas lire en assurant derrière, à la volée, le transcodage ou le réencodage qui va bien. Attention : transcoder un mkv 1080p en réencodant la partie audio DTS à la volée ne se fait pas avec votre vieux PC pourri qui fait office de NAS&#8230; Là il faudra du multi-coeur qui envoie du gros !<br />
Et fin du fin, vous choisissez depuis la PS3 la méthode de transcodage/réencodage, la langue etc, depuis la PS3 via des menus spécifiques qui apparaissent.</p>
<p>A noter que Twonky Media Server est aussi un bon logiciel, mais payant.<br />
Je décris ici la procédure pour installer correctement l&#8217;outil, en partant d&#8217;une Debian Lenny absolument vide (ssh seulement, et wget). La &laquo;&nbsp;difficulté&nbsp;&raquo; est d&#8217;utiliser des outils un peu récents en Debian, côté multimedia. On ira voir du côté des dépôts <a href="http://www.debian-multimedia.org/">www.debian-multimedia.org</a>.<br />
A noter qu&#8217;en Squeeze, ce sera encore plus la fête, car les outils Lenny de &laquo;&nbsp;debian multimedia&nbsp;&raquo; datent aussi un peu, pour certains.<span id="more-1108"></span></p>
<p>J&#8217;ai installé l&#8217;outil sur un compte utilisateur dédié à cela. Afin d&#8217;avoir des permissions sur mes fichiers multimédia en cohérence et de ne pas faire tourner ça au nom du root, évidemment.</p>
<h1>Ajout du dépôt multimedia</h1>
<p>Le <a href="http://www.debian-multimedia.org/">site </a>décrit la procédure. Dans notre cas, on importe les clefs de signature des paquets :</p>
<pre>$ wget http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/
$ dpkg -i debian-multimedia-keyring_2008.10.16_all.deb</pre>
<p>Puis on ajoute le dépôt et on met à jour :</p>
<pre>$ cat >> /etc/apt/sources.list
deb http://www.debian-multimedia.org lenny main non-free
&lt;CTRL-D&gt;
$ aptitude update</pre>
<h1>Installation des outils</h1>
<p>On installe à la fois les outils vidéos et ce qu&#8217;il faut pour faire tourner le Java + 2/3 trucs annexes.</p>
<pre>$ aptitude install screen rar unrar zip unzip bzip2 vlc mplayer mencoder ffmpeg sun-java6-jre</pre>
<p>Là j&#8217;installe &laquo;&nbsp;screen&nbsp;&raquo;, voir plus bas ; rar/zip pour pouvoir lire directement certaines archives ; les outils vidéos ; le java SUN.<br />
A noter que tsMuxeR est fourni avec PMS.</p>
<h1>Installation de PMS</h1>
<p>En tant que l&#8217;utilisateur &laquo;&nbsp;pms&nbsp;&raquo; (appelons-le comme ça), j&#8217;installe PMS et règle 2/3 trucs.<br />
Récupérez le depuis <a href="http://code.google.com/p/ps3mediaserver/downloads/list">http://code.google.com/p/ps3mediaserver/downloads/list</a>, actuellement avec un <code>wget http://ps3mediaserver.googlecode.com/files/pms-linux-1.10.5.tgz</code><br />
Puis :</p>
<pre>pms@nas:~$ tar xzvf pms-linux-1.10.5.tgz
pms@nas:~$ ln -sf pms-linux-1.10.5 pms
pms@nas:~$ chmod u+x pms/PMS.sh pms/linux/tsMuxeR</pre>
<p>Les permissions d&#8217;exécution ne sont pas bonnes et il manquerait notamment tsmuxer dans le panel d&#8217;outil.</p>
<p>Voilà, normalement c&#8217;est fini. Pas compliqué <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>Lancement graphique de PMS</h1>
<p>La première fois, il faut le lancer graphiquement pour paramétrer 2/3 choses. Ensuite, on va scripter ce qu&#8217;il faut pour qu&#8217;il démarre au boot, en mode texte, dans un &laquo;&nbsp;screen&nbsp;&raquo;.<br />
Si vous intervenez à distance, faites un tunnel SSH avec déport X11 pour récupérer l&#8217;interface graphique.<br />
<strong>Le principe de PMS est le suivant : soit il voit un serveur X qui répond, alors il part en mode graphique, soit il n&#8217;en voit pas, alors il part en mode texte.</strong></p>
<pre>pms@nas:$ cd pms ; ./PMS.sh</pre>
<p>Il faut faire 3 choses :</p>
<ul>
<li>
Passer dans tous les onglets (s&#8217;il ne voit pas votre PS3, sur le premier onglet, pensez à l&#8217;allumer&#8230; mais ce n&#8217;est pas nécessaire pour configurer) et réfléchir 2 minutes. Notez par exemple la génération des vignettes accompagnant les vidéos, vignettes générées en prenant l&#8217;image à la X-ième seconde du film grâce à mencoder&#8230;.
</li>
<li>
Aller obligatoirement dans l&#8217;onglet &laquo;&nbsp;Transcoding settings&nbsp;&raquo; pour vérifier que tout est vert, que tous les outils vidéo/audio sont installés. Sinon, lire ce que ça raconte.
</li>
<li>
Aller dans &laquo;&nbsp;Folders Sharing&nbsp;&raquo;, ajouter les répertoires qui vous intéressent et activer le partage, sans quoi, il ne va pas se passer grand chose&#8230;
</li>
</ul>
<p>D&#8217;avance, je précise que l&#8217;outil n&#8217;a pas besoin de parcourir à l&#8217;avance tous les répertoires, il génère à la volée lorsqu&#8217;on rentre dans un répertoire depuis la PS3. Enorme. Très dynamique.<br />
Voyez les photos d&#8217;écran sur le site officiel s&#8217;il faut : <a href="http://code.google.com/p/ps3mediaserver/">http://code.google.com/p/ps3mediaserver/</a></p>
<h1>Lancement en mode texte</h1>
<p>Enfin, une fois que tout est paramétré et que ça fonctionne depuis la PS3, on passe à l&#8217;industrialisation en mode texte <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Je recommande un petit script comme ceci :</p>
<pre>pms@nas:~$ cat ~/lance_pms.sh
#!/bin/sh
cd /home/pms/pms
screen -S pms -d -m ./PMS.sh</pre>
<p>Avec les permissions qui vont bien <code>chmod u+x ~/lance_pms.sh</code></p>
<p>Une fois lancé, prenez la main sur votre screen (<code>screen -r pms</code>) et vérifiez que ça ne gueule pas. Ca doit ressembler à :</p>
<pre>GUI environment no available
Switching to console mode
[main] TRACE 13:45:19.739 Starting Java PS3 Media Server v1.10.5
[main] TRACE 13:45:19.740 by shagrath / 2008-2009
[main] TRACE 13:45:19.740 http://ps3mediaserver.blogspot.com
[main] TRACE 13:45:19.740 http://code.google.com/p/ps3mediaserver
[main] TRACE 13:45:19.740
[main] TRACE 13:45:19.741 Java 1.6.0_20-Sun Microsystems Inc.
[main] TRACE 13:45:19.741 OS Linux i386 2.6.26-2-686
[main] TRACE 13:45:19.741 Encoding: UTF-8
[main] TRACE 13:45:19.748 Temp folder: /tmp/javaps3media
[main] TRACE 13:45:19.776 Registering transcoding engine FFmpeg Audio
[main] TRACE 13:45:19.789 Registering transcoding engine MEncoder
[main] TRACE 13:45:19.790 Registering transcoding engine MPlayer Audio
[main] TRACE 13:45:19.791 Registering transcoding engine MEncoder Web
[main] TRACE 13:45:19.791 Registering transcoding engine MPlayer Video Dump
[main] TRACE 13:45:19.792 Registering transcoding engine MPlayer Web
[main] TRACE 13:45:19.795 Registering transcoding engine TsMuxer
[main] TRACE 13:45:19.795 Registering transcoding engine Audio High Fidelity
[main] TRACE 13:45:19.796 Registering transcoding engine VideoLan Audio Streaming
[main] TRACE 13:45:19.796 Registering transcoding engine VideoLan Video Streaming
[main] TRACE 13:45:19.797 Registering transcoding engine Raws Thumbnailer
[main] TRACE 13:45:19.912 Scanning network interface eth0 / eth0
[main] TRACE 13:45:19.914 Using address /192.168.x.y found on network interface: name:eth0 (eth0) index: 2 addresses: /192.168.x.y;
[main] TRACE 13:45:19.915 Created socket: /192.168.x.y:5001
[Thread-1] TRACE 13:45:19.924 Starting DLNA Server on host 192.168.x.y and port 5001...
[main] TRACE 13:45:19.933 Using database located at : /home/pms/pms-linux-1.10.5/database
[main] TRACE 13:45:20.448 Sending ALIVE...
[main] TRACE 13:45:20.454 Using following UUID: 00a29-blabla-3e839
[main] TRACE 13:45:25.422 It's ready! You should see the server appears on XMB
[Thread-8] TRACE 13:45:35.420 Sending ALIVE...</pre>
<p>On voit qu&#8217;il a bien trouvé tous les outils </p>
<h1>Divers</h1>
<h2>&laquo;&nbsp;crontab&nbsp;&raquo; pour un lancement/relance automatique</h2>
<p>Ca vaut ce que ça vaut, mais au moins ça limite mes interventions du type &laquo;&nbsp;papaaaaaa, y&#8217;a les dessins animés qui marchent plus&nbsp;&raquo;. Dans la crontab de l&#8217;utilisateur &laquo;&nbsp;pms&nbsp;&raquo;, j&#8217;ai ceci :</p>
<pre>LANG=fr_FR.utf8
# m h  dom mon dow   command
* * * * * x=`ps u |grep java | grep -v grep` ; if [ "x$x" == "x" ]; then /home/pms/lance_pms.sh; fi</pre>
<p>J&#8217;insiste sur le &laquo;&nbsp;UTF8&#8243;, sinon il zappe tout ce qui contient des accents&#8230; et ça, on s&#8217;en rend compte avec la lancement automatique, pas le lancement depuis le compte utilisateur qui lui, a bien la variable LANG comme il faut dans son environnement utilisateur.</p>
<h2>bug</h2>
<p>J&#8217;avais noté un bug : attention si vous avez lancé l&#8217;outil avec un autre utilisateur, le répertoire /tmp/javaps3media reste, avec des permissions restreintes. Donc ça plante lorsque vous voulez le lancer depuis un autre utilisateur.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2010/09/29/ps3mediaserver-sur-une-debian-toute-fraiche-serveur-dlnaupnpbidule-pour-la-ps3/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

