<?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>Debian or not to be ? 2.0 &#187; USD</title> <atom:link href="http://www.crashdump.fr/tag/usd/feed/" rel="self" type="application/rss+xml" /><link>http://www.crashdump.fr</link> <description>that is the question</description> <lastBuildDate>Mon, 23 Jan 2012 13:14:39 +0000</lastBuildDate> <language>fr</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>Importer la musique de son iPhone sur un Mac</title><link>http://www.crashdump.fr/iphone/importer-la-musique-de-son-iphone-sur-un-mac-258/</link> <comments>http://www.crashdump.fr/iphone/importer-la-musique-de-son-iphone-sur-un-mac-258/#comments</comments> <pubDate>Tue, 12 Aug 2008 07:33:12 +0000</pubDate> <dc:creator>Crashdump</dc:creator> <category><![CDATA[iPhone]]></category> <category><![CDATA[copier]]></category> <category><![CDATA[importer]]></category> <category><![CDATA[ipod]]></category> <category><![CDATA[itunes]]></category> <category><![CDATA[Mac]]></category> <category><![CDATA[Musique]]></category> <category><![CDATA[USD]]></category><guid isPermaLink="false">http://www.crashdump.fr/?p=258</guid> <description><![CDATA[Entre le mac a la maison celui du travail et ceux des potes on aimerais bien pouvoir importer la musique dans le sens iPhone (ou iPod) Ordinateur.. mais cela, iTunes ne le permet pas ! J’ai auparavant essayé des dizaines de logiciels sans pour autant en trouver un qui me comble (souvent des sharewares, en [...]]]></description> <content:encoded><![CDATA[<p>Entre le mac a la maison celui du travail et ceux des potes on aimerais bien pouvoir importer la musique dans le sens iPhone (ou iPod) Ordinateur.. mais cela, iTunes ne le permet pas ! J’ai auparavant essayé des dizaines de logiciels sans pour autant en trouver un qui me comble (souvent des sharewares, en plus) jusqu’à ce que je tombe sur <a rel="nofollow" href="http://www.fadingred.org/senuti/">Senuti</a>. Ce logiciel merveilleux &#8211; <del datetime="2009-06-12T23:15:35+00:00">et gratuit</del> maintenant payant (18$) &#8211; vous permettra de copier une ou plusieures chansons/albums/playlists vers votre mac.<br /> <span style="text-decoration: line-through;"><em></em></span></p><p><span style="text-decoration: line-through;"><em>Notez que la version stable actuelle (0.50.1) ne gère pas l’iPhone, il vous faudra prendre la bêta (0.50.2b8) qui elle, marche a merveille.</em></span> La version actuelle 0.50.6 fonctionne à merveille.</p><p><span style="color: #0000ee; text-decoration: underline;"><a href="http://www.crashdump.fr/wp-content/uploads/2008/08/senuti.png"><img class="alignnone size-thumbnail wp-image-267" title="senuti" src="http://www.crashdump.fr/wp-content/uploads/2008/08/senuti-430x125.png" alt="" width="430" height="125" /></a></span></p><p>Il existe une alternative gratuite et open source nommée iTunesFS, <a rel="nofollow" href="http://www.mulle-kybernetik.com/software/iTunesFS/">disponible ici</a>.</p><p><a href="http://www.crashdump.fr/wp-content/uploads/2008/08/screenshot.png"><img src="http://www.crashdump.fr/wp-content/uploads/2008/08/screenshot-430x125.png" alt="screenshot iTunesFS" title="screenshot iTunesFS" width="430" height="125" class="alignnone size-thumbnail wp-image-699" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.crashdump.fr/iphone/importer-la-musique-de-son-iphone-sur-un-mac-258/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Bash &#8230; #5</title><link>http://www.crashdump.fr/debian/bash-5-25/</link> <comments>http://www.crashdump.fr/debian/bash-5-25/#comments</comments> <pubDate>Thu, 12 Jul 2007 14:53:57 +0000</pubDate> <dc:creator>Crashdump</dc:creator> <category><![CDATA[Debian]]></category> <category><![CDATA[USD]]></category><guid isPermaLink="false">http://blog.aemeth.org/?p=25</guid> <description><![CDATA[Résumé des épisodes précédents : 1. Le prompt bash et la manipulation des titres des fenêtres 2. Navigation dans les répertoires en ligne de commande et les alias 3. L&#8217;historique et le complètement avancé avec bash 4. Les entrée/sorties, leur redirection et les motifs du shell Ce billets est quant à lui consacré à l&#8217;enchaînement [...]]]></description> <content:encoded><![CDATA[<h2><li>Résumé des épisodes précédents :</li></h2><p> 1. <a rel="nofollow" href="?p=8">Le prompt bash et la manipulation des titres des fenêtres</a><br /> 2. <a rel="nofollow" href="?p=10">Navigation dans les répertoires en ligne de commande et les alias</a><br /> 3. <a rel="nofollow" href="?p=11">L&#8217;historique et le complètement avancé avec bash</a><br /> 4. <a rel="nofollow" href="?p=24">Les entrée/sorties, leur redirection et les motifs du shell</a></p><p>Ce billets est quant à lui consacré à l&#8217;enchaînement de commandes, au contrôles des tâches (jobs) puis à deux petites astuces bien pratiques à utilisées sans modération. Je pense que ce billet est le dernier de cette série, les prochains autour du shell seront probablement sur les scripts et diverses astuces plus ou moins pointues comme les deux présentées à la fin de ce billet.</p><h2><li>Enchaîner les commandes</li></h2><p>L&#8217;utilisation probablement la plus courante d&#8217;un shell consiste à taper une commande, regarder sa sortie ou son résultat et éventuellement recommencer en fonction du résultat précédent. On peut aussi vouloir exécuter plusieurs commandes à la suite. Pour cela, on peut écrire un script ou une fonction bash (ce sera probablement l&#8217;objet d&#8217;une prochaine série de billets) mais il est aussi possible de le faire en mode interactif.<br /> <span id="more-25"></span><br /> <strong>Plusieurs commandes à la suite sans condition</strong></p><p>Pour éxécuter plusieurs commandes de suite, il est possible de les écrire les unes à la suite des autres en les séparant par un point-virgule, par exemple :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ cd /tmp ; find . -type d -user tigrou &gt; liste_dossiers ; cd ; cat /tmp/liste_dossiers<br /> ./orbit-tigrou<br /> ./ssh-QSQBhp4238<br /> ./gconfd-tigrou<br /> ./gconfd-tigrou/lock<br /> ./.exchange-tigrou<br /> ./listen</div></td></tr></tbody></table></div><p>Cette liste de 4 commandes est regroupée sur une ligne, j&#8217;aurais aussi bien pu taper chacune d&#8217;elle sur une ligne séparée, le résultat aurait été le même. Si l&#8217;une d&#8217;entre elles échoue, les autres sont quand même exécutées.</p><p><strong>Plusieurs commandes à la suite sous condition</strong></p><p>Chaque commande lancée renvoie normalement un code de retour. Par convention, un résultat normal (sans erreur) renvoie un code de retour égale à zéro, si quelque chose se passe mal, ce code est différent de zéro et peu avoir différentes significations selon les programmes. La variable $? contient le code de retour de la précédente commande lancée. En séparant des commandes par &#038;&#038;, bash vérifie que la commande a bien renvoyé un code de retour nulle avant d&#8217;éxécuter la suivante, sinon il interrompt la suite, exemple :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ test -L /tmp<br /> $ echo $?<br /> 1<br /> $ test -e /tmp &amp;&amp; echo &quot;/tmp existe&quot; &amp;&amp; test -L /tmp &amp;&amp; echo &quot;/tmp est un lien symbolique&quot;<br /> /tmp existe</div></td></tr></tbody></table></div><p>Cette suite de commande est interrompue après le test -L car son code de retour n&#8217;est pas nulle puisque /tmp n&#8217;est pas un lien symbolique.</p><h2><li>Contrôle des tâches</li></h2><p>En ajoutant le caractère &#038; à une commande, celle-ci est lancée en arrière plan tout en restant &laquo;&nbsp;attaché&nbsp;&raquo; au shell qui l&#8217;a lancé. On peut aussi faire passer en arrière plan une commande avec le raccourci Ctrl+z. Pour récupèrer la main sur le programme passé en arrière plan, il est possible d&#8217;utiliser la commande fg . J&#8217;utilise couramment ce mécanisme lorsque j&#8217;édite un fichier à l&#8217;aide de vim en ssh et que je me rend compte que je dois lancer une autre commande, je peux alors faire Ctrl+z pour récupèrer le shell, je lance ma commande puis je tape fg pour reprendre la main sur mon éditeur. fg accepte en paramètre un entier qui indique le numéro de la tâche à remettre en avant plan. Ce numéro correspond à l&#8217;ordre dans lequel les programmes ont été mis en arrière plan.<br /> Quelques trucs&#8230;</p><h2><li>Un peu de couleurs avec grep</li></h2><p>Les émulateurs de terminal sont capables d&#8217;afficher quelques couleurs (en général 16). La configuration par défaut sous la plupart des distributions fait en sorte que ls affiche sa sortie avec des couleurs en fonction du type de fichier ou de son extension. D&#8217;autres programmes sont capables d&#8217;améliorer leur affichage avec un peu de couleur.</p><p>C&#8217;est par exemple le cas de grep qui permet de filtrer un texte selon une expression rationnelle en mettant en avant les morceaux de texte correspondant au motif, c&#8217;est assez pratique lorsque l&#8217;on tente de déchiffrer un fichier de log ou tout autre fichier texte.</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ cat .bashrc | egrep --color ' [a-z][a-z]='</div></td></tr></tbody></table></div><p>Cette ligne permet d&#8217;obtenir tous les alias de 2 caractères. Ce qui donne dans mon terminal :</p><p>Pour que ce comportement soit systématique, il suffit d&#8217;ajouter les lignes suivante dans son fichier ~/.bashrc :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">alias grep='grep --color=auto'<br /> alias egrep='egrep --color=auto'</div></td></tr></tbody></table></div><p>Pour que tout appel à grep (et à egrep) mette en valeur le motif trouvé.</p><h2><li>Suivre un fichier de log</li></h2><p>tail est un programme qui propose d&#8217;afficher les n dernières lignes ou les n derniers octets d&#8217;un fichier. Il dispose d&#8217;une option -f (pour follow) très intéressante permettant de suivre un fichier pour faire défiler les dernières lignes ajoutées. Cette option combinée à d&#8217;autres utilitaires de traitement de texte (cut , sed , grep , &#8230;) permet de suivre différents types de journaux facilement, deux exemples courants :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># suivre les logs d'Apache avec uniquement l'IP du visiteur, la page demandée,<br /> # son navigateur et le référent sans les requêtes pour les images et les feuilles de style<br /> tail -f access.log &nbsp;| egrep -v --line-buffered '(/var|/design|/share)' | cut -d ' ' -f 1,7,12-<br /> # suivre les logs de Postfix des mails rejetés<br /> # avec uniquement la raison du rejet<br /> tail -f mail.log | grep --line-buffered reject | cut -d ' ' -f 8-</div></td></tr></tbody></table></div><p>À noter dans ces exemples, l&#8217;ajout du paramètre &#8211;line-buffered pour indiquer à grep de traiter les données ligne par ligne plutôt que par un buffer plus grand. Cette option permet de ne pas avoir de latence entre le moment ou tail écrit une nouvelle ligne et le moment ou grep la traite.</p> ]]></content:encoded> <wfw:commentRss>http://www.crashdump.fr/debian/bash-5-25/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Bash &#8230; #4</title><link>http://www.crashdump.fr/debian/bash-4-24/</link> <comments>http://www.crashdump.fr/debian/bash-4-24/#comments</comments> <pubDate>Tue, 03 Jul 2007 10:28:46 +0000</pubDate> <dc:creator>Crashdump</dc:creator> <category><![CDATA[Debian]]></category> <category><![CDATA[USD]]></category><guid isPermaLink="false">http://blog.aemeth.org/?p=24</guid> <description><![CDATA[Résumé des épisodes précédents : 1. Le prompt bash et la manipulation des titres des fenêtres 2. Navigation dans les répertoires en ligne de commande et les alias 3. L&#8217;historique et le complètement avancé avec bash Après ces trois billets plutôt sur la configuration de bash , passons aux choses sérieuses avec l&#8217;étude de trois [...]]]></description> <content:encoded><![CDATA[<h2><li>Résumé des épisodes précédents :</li></h2><p> 1. <a rel="nofollow" href="?p=8">Le prompt bash et la manipulation des titres des fenêtres</a><br /> 2. <a rel="nofollow" href="?p=10">Navigation dans les répertoires en ligne de commande et les alias</a><br /> 3. <a rel="nofollow" href="?p=11">L&#8217;historique et le complètement avancé avec bash</a></p><p>Après ces trois billets plutôt sur la configuration de bash , passons aux choses sérieuses avec l&#8217;étude de trois concepts qui font du shell en général et de bash en particulier un outil extrêment puissant :</p><h2><li>Les gestion des entrées/sorties (ou flux ou Input/Output ou I/O pour les intimes :) avec les redirections et l&#8217;utilisation du pipe.</li></h2><p> 1. Rediriger la sortie standard dans un fichier<br /> 2. Rediriger la sortie d&#8217;erreur dans un fichier<br /> 3. Rediriger la sortie standard et la sortie d&#8217;erreur sur la sortie standard<br /> 4. Et l&#8217;entrée standard ?<br /> 5. Pour aller plus loin<br /> 2. Les motifs (ie le globbing)<br /> <span id="more-24"></span></p><h2><li>Les entrées/sorties</li></h2><p>L&#8217;article sur les flux standards sur Wikipedia est une très bonne et courte introduction au concept d&#8217;entrée/sorties standards. Pour faire simple, lorsqu&#8217;un shell est lancé en mode interactif (ie le shell attend qu&#8217;on lui tape des commandes typiquement dans un terminal), l&#8217;entrée standard est le clavier et la sortie standard et la sortie d&#8217;erreur sont reliées au terminal. Par défaut, lorsque le shell lance une commande, cette commande hérite (entre autre) des entrées/sorties standards du shell parent. Ces flux sont manipulables dans le shell, quelques exemples pratiques à l&#8217;aide de la commande find permettant de rechercher tous les répertoires dans le dossier de l&#8217;utilisateur root sur lequel mon utilisateur n&#8217;a évidemment pas tous les droits, cette commande renvoie donc des informations sur la sortie d&#8217;erreur et la sortie standard :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ find ~root -type d<br /> /root<br /> /root/.gnome2<br /> find: /root/.gnome2: Permission non accordée<br /> /root/.gconf<br /> find: /root/.gconf: Permission non accordée</div></td></tr></tbody></table></div><p><strong>Rediriger la sortie standard dans un fichier</strong></p><p>Cette opération se fait avec l&#8217;opérateur >, qui créa le fichier si il n&#8217;existe pas ou l&#8217;écrasera avec la sortie standard en l&#8217;utilisant de la manière suivante :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ find ~root -type d &gt; sortie_standard<br /> find: /root/.gnome2: Permission non accordée<br /> find: /root/.gconf: Permission non accordée<br /> &gt; tigrou@Lorien[192.168.0.243]:/tmp$ cat sortie_standard <br /> /root<br /> /root/.gnome2<br /> /root/.gconf</div></td></tr></tbody></table></div><p>Plutôt que d&#8217;écraser le fichier, il est aussi possible d&#8217;ajouter la sortie au fichier si celui-ci existe déjà avec l &#8216;opérateur >>.<br /> Rediriger la sortie d&#8217;erreur dans un fichier</p><p>Cette opération se fait également avec > mais en spécifiant le descripteur de la sortie d&#8217;erreur (par défaut 2) :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ find ~root -type d 2&gt; sortie_erreur<br /> /root<br /> /root/.gnome2<br /> /root/.gconf<br /> &gt; tigrou@Lorien[192.168.0.243]:/tmp$ cat sortie_erreur <br /> find: /root/.gnome2: Permission non accordée<br /> find: /root/.gconf: Permission non accordée</div></td></tr></tbody></table></div><p>Cette séquence est fréquemment utilisée pour n&#8217;afficher que la sortie standard en spécifiant comme fichier le fichier spécial /dev/null . De la même manière que précédemment, 2>> ajoutera la sortie d&#8217;erreur à la fin du fichier.<br /> Rediriger la sortie d&#8217;erreur et la sortie standard sur la sortie standard</p><p>Ici, on souhaite tout avoir sur la même sortie pour un traitement ultérieur, pour cela il faut indiquer au shell de rediriger les données écrites sur le descripteur 2 sur le descripteur 1.</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ find ~root -type d &gt; sortie_1_et_2 2&gt;&amp;1<br /> $ cat sortie_1_et_2 <br /> /root<br /> /root/.gnome2<br /> find: /root/.gnome2: Permission non accordée<br /> /root/.gconf<br /> find: /root/.gconf: Permission non accordée</div></td></tr></tbody></table></div><p><strong>Et l&#8217;entrée standard ?</strong></p><p>Il est possible d&#8217;enchâiner les commandes en redirigeant les sorties d&#8217;une commande sur l&#8217;entrée standard à l&#8217;aide du pipe (| ou tube), par exemple si je souhaite n&#8217;avoir que les messages concernant les dossier de GNOME à la suite de find, je peux utiliser l&#8217;utilitaire grep pour filtrer la sortie comme suit :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ find ~root -type d 2&gt;&amp;1 | grep gnome<br /> /root/.gnome2<br /> find: /root/.gnome2: Permission non accordée</div></td></tr></tbody></table></div><p>Comme vue précédemment, les sorties standard et d&#8217;erreur de find sont redirigés sur la sortie standard qui est elle même redirigées sur l&#8217;entrée standard de grep. Cette ligne est équivalente aux deux lignes suivantes utilisant le symbole < permettant de rediriger le contenu d'un fichier sur l'entrée standard :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ find ~root -type d &gt; sortie_1_et_2 2&gt;&amp;1<br /> $ grep gnome &lt; sortie_1_et_2 <br /> /root/.gnome2<br /> find: /root/.gnome2: Permission non accordée</div></td></tr></tbody></table></div><p>elle même équivalente à</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ find ~root -type d &gt; sortie_1_et_2 2&gt;&amp;1<br /> $ cat sortie_1_et_2 | grep gnome<br /> /root/.gnome2<br /> find: /root/.gnome2: Permission non accordée</div></td></tr></tbody></table></div><p>Ce sont des exemples très simples, mais il est possible ainsi de faire des choses assez complexe en une ligne en enchaînant quelques commandes (qui feront l&#8217;objet d&#8217;un prochaine billet) :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ cat access.log | egrep -v '(/var|/design|/share|/stats| 404 )' | cut -d ' ' -f 7 | sort | uniq | wc -l <br /> 2911</div></td></tr></tbody></table></div><p>Cette ligne lit le fichier de log d&#8217;apache access.log et permet de compter le nombre de pages différentes vues au moment où j&#8217;écris ces lignes.</p><p><strong>Pour aller plus loin</strong></p><p>Pour en revenir aux entrée/sorties, ces opérations sont les plus courantes, mais il existe bien d&#8217;autres possibilités décrites dans la page du manuel de bash.</p><h2><li>Les motifs</li></h2><p>Les motifs sont des caractères spécifiques qui permettent, une fois développé par le shell, de remplacer plusieurs fichiers sans avoir à tous les écrire. Pour faire simple, ce sont des expressions rationnelles très limitées. Le plus connu de ces caractères est l&#8217;étoile * souvent utilisé dans les rm -rf * (ce qui est très dangereux !). Pour tester ces caractères, il vaut mieux utiliser echo.</p><p>À la suite des commandes tapées ci-dessus, j&#8217;ai plusieurs fichiers dans le répertoire temporaire qui peuvent servir d&#8217;exemple :</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ ls<br /> gconfd-tigrou &nbsp;mapping-tigrou &nbsp;sortie_1_et_2 &nbsp;sortie_standard<br /> listen &nbsp; &nbsp; &nbsp; &nbsp; orbit-tigrou &nbsp; &nbsp;sortie_erreur &nbsp;ssh-jDyKBu4304<br /> # tout ce qui commençe par un s<br /> $ echo s*<br /> sortie_1_et_2 sortie_erreur sortie_standard ssh-jDyKBu4304<br /> # tout ce qui termine par un u<br /> $ echo *u<br /> gconfd-tigrou mapping-tigrou orbit-tigrou<br /> # tout ce qui termine par un chiffre<br /> $ echo *[0-9]<br /> sortie_1_et_2 ssh-jDyKBu4304<br /> # tout ce qui ne se termine PAS par un chiffre<br /> $ echo *[!0-9]<br /> gconfd-tigrou listen mapping-tigrou orbit-tigrou sortie_erreur sortie_standard<br /> # tout ce qui commence par sortie suivi d'un caractère suivi de standard<br /> $ echo sortie?standard<br /> sortie_standard</div></td></tr></tbody></table></div><p>Pour utiliser l&#8217;un de ces caractères sur la ligne de commande sans qu&#8217;il soit interprèté, il suffit de la préfixer d&#8217;un antislash (\).</p> ]]></content:encoded> <wfw:commentRss>http://www.crashdump.fr/debian/bash-4-24/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Munin, le top du monitoring !</title><link>http://www.crashdump.fr/tout-et-rien/munin-le-top-du-monitoring-3/</link> <comments>http://www.crashdump.fr/tout-et-rien/munin-le-top-du-monitoring-3/#comments</comments> <pubDate>Thu, 19 Apr 2007 20:41:13 +0000</pubDate> <dc:creator>Crashdump</dc:creator> <category><![CDATA[Tout-et-Rien]]></category> <category><![CDATA[Deny]]></category> <category><![CDATA[USD]]></category> <category><![CDATA[www.aemeth.org]]></category><guid isPermaLink="false">http://blog.aemeth.org/?p=3</guid> <description><![CDATA[Après avoir essayé differents outils de monitoring comme cacti, mrtg, mrtnk.. et j&#8217;en passe je suis enfin tombé sur une perle &#8211; il fait partie de ces logiciels que l&#8217;on a malheureusement pas connu plus tôt.. ce qui aurais pus nous eviter des heures d&#8217;insomnies ! J&#8217;ai donc décidé de rediger un tuto pour son [...]]]></description> <content:encoded><![CDATA[<p>Après avoir essayé differents outils de monitoring comme cacti, mrtg, mrtnk.. et j&#8217;en passe je suis enfin tombé sur une perle &#8211; il fait partie de ces logiciels que l&#8217;on a malheureusement pas connu plus tôt.. ce qui aurais pus nous eviter des heures d&#8217;insomnies ! J&#8217;ai donc décidé de rediger un tuto pour son installation sur une Debian.</p><p><strong><em>Le téléchargement et l&#8217;installation via apt:</em></strong></p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">apt-get install munin munin-node</div></td></tr></tbody></table></div><h2><li>La configuration:</li></h2><p>L’ensemble des fichiers de configuration se trouve dans le répertoire /etc/munin:<br /> * munin.conf : configuration du serveur<br /> * munin-node.conf : configuration de l’agent<br /> * plugin-conf.d : répertoire des fichiers de configuration des plugins<br /> * plugins : répertoire des plugins activé ( la liste des plugins disponible se trouve dans /usr/share/munin/plugins)<br /> * templates : modèles des pages web pour l’interface web</p><p># Commençons par editer le &laquo;&nbsp;<em>/etc/munin/munin.conf</em>&laquo;&nbsp;, remplacez ces deux lignes par le domaine et l&#8217;ip de la machine a monitoré: (ici pour exemple c&#8217;est l&#8217;ip du serveur sur lequel vous naviguez)</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[www.aemeth.org]<br /> address 213.251.170.118</div></td></tr></tbody></table></div><p><span id="more-3"></span><br /> Note: Vous pouvez inserer d&#8217;autres sous-domaines/serveurs a la suite, exemple: (ils sont juste ici a titre d&#8217;exemple.. et ne sont pas réels)</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[files.aemeth.org]<br /> address 213.251.170.119<br /> use_node_name yes<br /> [proxy.aemeth.org]<br /> address 213.251.170.254<br /> use_node_name yes<br /> [etc.aemeth.org]<br /> address 213.251.170.120<br /> use_node_name yes</div></td></tr></tbody></table></div><p>#Ensuite, occupons nous du &laquo;&nbsp;<em>/etc/munin/munin-node.conf</em>&laquo;&nbsp;:<br /> Ajoutez l&#8217;ip de la machine autorisée a se connecter au &#8216;serveur&#8217; Munin (si vous voulez simplement monitorer la machine sur laquelle vous allez creer les graphiques entrez ceci:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">allow ^127\.0\.0\.1$</div></td></tr></tbody></table></div><p>Pour prendre en compte les modifications.. on redémarre le node:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/etc/init.d/munin-node restart</div></td></tr></tbody></table></div><p>Dans mon cas, après l&#8217;installation les modifications n&#8217;ons pas été apportée aux fichiers config de apache (bug?) j&#8217;ai donc du creer une nouvelle configuration pour mes vHost:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cd /etc/apache2/sites-available/</div></td></tr></tbody></table></div><p>On crée le fichier:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cat munin.conf</div></td></tr></tbody></table></div><p>Et on y colle le code suivant.. modifié a votre sauce !</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt; VirtualHost *&gt;<br /> &nbsp; &nbsp; &nbsp; &nbsp; ServerAdmin &nbsp; &nbsp; root@aeemeth.org<br /> &nbsp; &nbsp; &nbsp; &nbsp; ServerName &nbsp; &nbsp; &nbsp;stats.aemeth.org<br /> &nbsp; &nbsp; &nbsp; &nbsp; DocumentRoot /var/www/stats<br /> &nbsp; &nbsp; &nbsp; &nbsp; &lt;Directory /&gt;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Options FollowSymLinks<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AllowOverride None<br /> &nbsp; &nbsp; &nbsp; &nbsp; &lt;/Directory&gt;<br /> &lt; /VirtualHost&gt;</div></td></tr></tbody></table></div><p>Terminez par Ctrl-D</p><h2><li>Monitorer Apache:</li></h2><p> (Version 2.x)</p><p>Editez &laquo;&nbsp;<em>/etc/apache2/apache2.conf</em>&nbsp;&raquo; puis décomentez ces lignes: (retirez les # en début de ligne)</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#&lt; Location /server-status&gt;<br /> # &nbsp; &nbsp;SetHandler server-status<br /> # &nbsp; &nbsp;Order deny,allow<br /> # &nbsp; &nbsp;Deny from all<br /> # &nbsp; &nbsp;Allow from .your_domain.com<br /> #&lt; /Location&gt;</div></td></tr></tbody></table></div><p>On vérifie si la syntaxe est correcte:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">apache2ctl -t</div></td></tr></tbody></table></div><p>On active le module status de apache (le script l&#8217;utilise pour récupérer les données qui serviront pour le graphique)</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">a2enmod info</div></td></tr></tbody></table></div><p>Et en recharge la nouvelle configuration:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/etc/init.d/apache2 reload</div></td></tr></tbody></table></div><p>Pour ce qui est de la config d&#8217;apache2, c&#8217;est terminé.. occupons nous de munin. Il faut maintenant activer les plugins &#8211; ons ne peut plus simple avec le système de liens a la apache 2.x !</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/<br /> ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/<br /> ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/</div></td></tr></tbody></table></div><p>et on relance:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/etc/init.d/munin-node restart</div></td></tr></tbody></table></div><p>(si vous avez des erreures, il se pourrais qu&#8217;il vous manque la librairie &laquo;&nbsp;<em>libwww-perl</em>&nbsp;&raquo; rien de plus simple pour l&#8217;installer:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">apt-get install libwww-perl</div></td></tr></tbody></table></div><p>Voila.. votre serveur est pret a etre monitoré comme jamais ;)</p><p><em>Ajout du 19 Mars 2007:</em></p><h2><li>Les Plugins</li></h2><p>Les plugins se trouvent dans &laquo;&nbsp;<em>/usr/share/munin/plugins/</em>&nbsp;&raquo; .. mais attention, ils ne sont pas forcements actifs ! Pour qu&#8217;un plug-in soit actif il dois avoir un lien symbolique vers &laquo;&nbsp;<em>/etc/munin/plugins/</em>&laquo;&nbsp;, exemple avec le plugin apache_loadtime.</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># cd /usr/share/munin/plugins<br /> # touch apache_loadtime<br /> # chmod +x apache_loadtime<br /> # cd /etc/munin/plugins<br /> # ln -s /usr/share/munin/plugins/apache_loadtime .<br /> # nano ../plugin-conf.d/munin-node</div></td></tr></tbody></table></div><p>Mettez y a la fin:</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[apache_loadtime*]<br /> user root</div></td></tr></tbody></table></div><p>Et enfin, redémarrez le munin-node</p><div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># /etc/init.d/munin-node restart</div></td></tr></tbody></table></div> ]]></content:encoded> <wfw:commentRss>http://www.crashdump.fr/tout-et-rien/munin-le-top-du-monitoring-3/feed/</wfw:commentRss> <slash:comments>31</slash:comments> </item> </channel> </rss>
<!-- Served from: www.crashdump.fr @ 2012-02-04 20:03:10 by W3 Total Cache -->
