<?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>www.pc-kc.fr &#187; debian</title>
	<atom:link href="http://www.pc-kc.fr/tag/debian/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pc-kc.fr</link>
	<description>Le site pour garder le contact avec votre PC</description>
	<lastBuildDate>Tue, 07 Feb 2012 07:23:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.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[Chez les autres]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[ubuntu]]></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" >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" >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/" >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" >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/" >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>0</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[Chez les autres]]></category>
		<category><![CDATA[debian]]></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>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[Chez les autres]]></category>
		<category><![CDATA[debian]]></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/j...]]></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>mailing-lists multi-domaine avec mailman sur un postfix « virtuel » (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[Chez les autres]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[postfix]]></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" >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/" >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" >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/" >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/" >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>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[Chez les autres]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[lenny]]></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[Chez les autres]]></category>
		<category><![CDATA[debian]]></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>0</slash:comments>
		</item>
		<item>
		<title>Utilisation d’une clef 3g…</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[Chez les autres]]></category>
		<category><![CDATA[clef]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ubuntu]]></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>0</slash:comments>
		</item>
		<item>
		<title>Nagios : supervision d’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[Chez les autres]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ubuntu]]></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>0</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[Chez les autres]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ubuntu]]></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>0</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[Chez les autres]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ubuntu]]></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>
	</channel>
</rss>

