Warning: Parameter 1 to behaviorsPagesStatiques::addTplPath() expected to be a reference, value given in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php on line 304

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/public/lib.urlhandlers.php on line 580

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/public/lib.urlhandlers.php on line 85

Warning: Cannot modify header information - headers already sent by (output started at /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/core/class.dc.core.php:304) in /home/flyounet/dev.flyou.net/dotclear-2.2.3/inc/libs/clearbricks/common/lib.http.php on line 273
Flyou.net [Dev] : Développements - Documentations 2017-05-04T04:41:02+02:00 Flyounet urn:md5:69f091255befd3717a2b2e45b9aa3688 Dotclear Comment ajouter un fichier au début d'un autre en Shell urn:md5:468a6a0e517f23f8fa61a5a237a4d921 2012-11-09T14:00:00+01:00 2012-11-09T15:10:33+01:00 Flyounet Documentations bashkshLinuxShellUnix <p>Voilà le topo, vous faites du <a href="http://dev.flyou.net/tag/Shell">Shell</a> (si si, y en a) et vous devez pour d'obscures raisons ajouter le contenu d'un fichier (appelons le <code>aCopier.txt</code>) au début d'un autre (appelons le <code>destination.txt</code>).</p> <p>Par exemple&nbsp;:</p> <pre>fly@dtc:~$ cat aCopier.txt # Ho la belle ligne que je me dois de copier au début d'un autre fichier # Entete,id,securities,ftt(French_Tax_Tobin) fly@dtc:~$ cat destination.txt bnp,7553,37426,130054874 cmcic,425,1271,99412364 ca,1103,17345,94577741 sg,211,914,4113647</pre> <p>Souvent les gens prennent le fichier destination, le copient à la fin du fichier à copier et remplace le fichier destination, ce qui se traduit souvent par un&nbsp;:</p> <pre>fly@dtc:~$ cat destination.txt &gt;&gt; aCopier.txt &amp;&amp; mv aCopier.txt destination.txt fly@dtc:~$ cat destination.txt # Ho la belle ligne que je me dois de copier au début d'un autre fichier # Entete,id,securities,ftt(French_Tax_Tobin) bnp,7553,37426,130054874 cmcic,425,1271,99412364 ca,1103,17345,94577741 sg,211,914,4113647</pre> <p>J'y vois personnellement deux inconvénients&nbsp;:</p> <ul> <li>L'opération n'est pas atomique<sup>[<a href="http://dev.flyou.net/post/2012/11/09/Comment-ajouter-un-fichier-au-d%C3%A9but-d-un-autre-en-Shell#pnote-44-1" id="rev-pnote-44-1">1</a>]</sup></li> <li>On perd le fichier <code>aCopier.txt</code> dans l'opération.</li> </ul> <p>Donc pour moi, la solution est plutôt&nbsp;: <code>echo "$(&lt;aCopier.txt)" "$(&lt;destination.txt)" &gt; destination.txt</code></p> <p>Non seulement, cela a l'avantage d'être du <a href="http://dev.flyou.net/tag/Shell">Shell</a> only (<a href="http://dev.flyou.net/tag/bash">Bash</a> ou <a href="http://dev.flyou.net/tag/ksh">KSH</a>), mais il me reste le fichier à copier...</p> <div class="footnotes"><h4>Notes</h4> <p>[<a href="http://dev.flyou.net/post/2012/11/09/Comment-ajouter-un-fichier-au-d%C3%A9but-d-un-autre-en-Shell#rev-pnote-44-1" id="pnote-44-1">1</a>] Par atomique, j'entends qu'il y a plusieurs étapes successives et donc que pour un retour arrière, c'est plus embettant. D'autant plus à cause du point suviant...</p></div> http://dev.flyou.net/post/2012/11/09/Comment-ajouter-un-fichier-au-d%C3%A9but-d-un-autre-en-Shell#comment-form http://dev.flyou.net/feed/atom/comments/44 Reminder : Conversion ISO-8859-1 vers UTF-8 urn:md5:188c48e136c4bc951877869550bb0e72 2010-07-29T16:35:00+02:00 2010-07-29T16:38:24+02:00 Flyounet Documentations Command lineShellUnix <p>Pour ne pas me poser la question chaque fois&nbsp;:</p> <pre>iconv -f iso-8859-1 -t UTF-8 &lt; monfichier.8859 &gt; monfichier.utf8</pre> http://dev.flyou.net/post/2010/07/29/Reminder-%3A-Conversion-ISO-8859-1-vers-UTF-8#comment-form http://dev.flyou.net/feed/atom/comments/30 Quel est le meilleur moyen pour savoir le nom d'un fichier pointé par un lien ? urn:md5:11a558b4cec36ada3f7b317536eafedb 2010-05-27T23:54:00+02:00 2010-05-28T00:15:24+02:00 Flyounet Documentations bashkshLinuxScriptShellsshUnix <p>Vaste question qui ne me semble reposer que sur 3 réponses&nbsp;:</p> <ul> <li>L'utilisation de <code>stat</code>,</li> <li>L'utilisation de <code>file</code>,</li> <li>L'utilisation de <code>readlink</code>.</li> </ul> <h5>Utilisons <code>stat</code> :<a name="stat"></a></h5> <pre>fly@Capote:~/tmp$ stat /tmp/totoz File: `/tmp/totoz' -&gt; `/tmp/pipo' Size: 40 Blocks: 0 IO Block: 4096 lien symbolique Device: 808h/2056d Inode: 3744 Links: 1 Access: (0777/lrwxrwxrwx) Uid: ( 1000/ fly) Gid: ( 1000/ fly) Access: 2010-05-27 23:42:00.590730266 +0200 Modify: 2010-05-26 23:34:46.978029853 +0200 Change: 2010-05-26 23:34:46.978029853 +0200</pre> <p>On constate que le nom du <em>fichier</em> pointé est indiqué en première ligne. Donc, la ligne suivante devrait suffire&nbsp;:</p> <pre>fly@Capote:~/tmp$ a="$(stat /tmp/totoz | head -1 | awk '{print $NF}')" ; echo ${a} `/tmp/pipo'</pre> <p>C'est bien mais pas top avec les <em>quotes</em>, d'où l'astuce suivante&nbsp;:</p> <pre>fly@Capote:~/tmp$ i=${#a}; echo ${a:1:(($i-2))} /tmp/pipo</pre> <h5>Utilisons <code>file</code> :<a name="file"></a></h5> <pre>fly@mst:~/tmp$ file /tmp/totoz /tmp/totoz: symbolic link to `/tmp/pipo'</pre> <p>On constate maintenant qu'une seule ligne est retournée, mais il y a toujours ce problème de <em>quotes</em>. Donc, on résout de la même manière&nbsp;:</p> <pre>fly@mst:~/tmp$ a="$(stat /tmp/totoz | awk '{print $NF}')" ; echo ${a} `/tmp/pipo' fly@mst:~/tmp$ i=${#a}; echo ${a:1:(($i-2))} /tmp/pipo</pre> <h5>Utilisons <code>readlink</code> :<a name="readlink"></a></h5> <pre>fly@Capote:~/tmp$ readlink /tmp/totoz /tmp/pipo</pre> <p>Bon, ben voilà; finalement je le préfère ce petit <code>readlink</code> (et de loin)...</p> http://dev.flyou.net/post/2010/05/27/Quel-est-le-meilleur-moyen-pour-savoir-le-nom-d-un-fichier-point%C3%A9-par-un-lien#comment-form http://dev.flyou.net/feed/atom/comments/28 DSSLv1 : Demerden Sie Sich License urn:md5:651065a4a94c9da161d77e58e1cd50e1 2010-05-20T13:09:00+02:00 2010-05-20T13:22:27+02:00 Flyounet Documentations Demerden Sie Sich LicenseDSSL <p>Ça y est, j'ai enfin publié ma <a href="http://dssl.flyounet.net/licenses/" hreflang="fr" title="Licence DSSLv1">version 1</a> de la <acronym title="Dermerden Sie Sich License">DSSL</acronym>. j'en ai profité pour la déclarer sur le site <a href="http://linuxfr.org" hreflang="fr">LinuxFR</a> en tant que <a href="https://linuxfr.org/~Flyounet/29741.html" hreflang="fr">journal</a> (Voir le journal ci-dessous).</p> <h4>A quoi sert cette Licence&nbsp;?</h4> <p>Lisez la, et vous saurez.</p> <h4>Pourquoi cette Licence&nbsp;?</h4> <p>Mais parce que j'en ai marre que l'on pose ce genre de question&nbsp;! Lisez la Licence et <strong>Démerdez-vous</strong>.</p> <h4>Le journal&nbsp;:</h4> <blockquote><p>Pour le boulot, j'ai régulièrement des collègues qui ne se posent même pas la question de savoir ce qu'un bout de code contient, ou plutôt que de lire une documentation m'assoiffent à me poser tout un tas de questions auxquelles j'ai déjà répondu dans la-dite documentation.</p> <p> Aussi, après maintes recherches, je n'ai pas trouvé de Licence (rédigée) qui correspondrait. Même si la RTFM Licence m'aurait tentée, elle était trop succincte&nbsp;; juste 5 mots.<br /> Donc, pour ma propre cause, J'ai décidé de passer tout mon boulot sous DSSL et d'en rédiger les termes qui sont maintenant accessibles à l'adresse suivante&nbsp;: [<a href="http://dssl.flyounet.net/licenses/" title="http://dssl.flyounet.net/licenses/">http://dssl.flyounet.net/licenses/</a>]</p> <p> Je pense l'avoir suffisamment corrigée pour qu'elle puisse être librement utilisée. La licence DSSL étant soumise à elle même, tirez-en les conclusions qui s'imposent.</p></blockquote> http://dev.flyou.net/post/2010/05/20/DSSLv1-%3A-Demerden-Sie-Sich-License#comment-form http://dev.flyou.net/feed/atom/comments/27 Mon petit environnement IRC : Création de fichiers Pipo urn:md5:485fc0f14d3867c19f91c367838c7f17 2010-01-19T23:04:00+01:00 2010-01-20T23:43:53+01:00 Flyounet Documentations IRCLinuxShellUnix <p>Si vous avez utilisé le <a href="http://dev.flyou.net/post/2010/01/14/Mon-petit-environnement-IRC">précédent billet</a> pour vous faire la main sur le <acronym title="eXtended DCC">XDCC</acronym>, alors vous risquez d'avoir, comme moi, besoin de fichiers volumineux.</p> <p>Dans mon joli répertoire <code>/usr/local/src/IRC_dev/XDCC_offers</code>&nbsp;:</p> <pre>for i in $(seq 1 10); do let j=15*$i; let k=1024*$j; echo "File: $j - Size : $k"; dd if=/dev/urandom of=file_${j}MiB bs=1024 count=$k;done</pre> <p>Ligne qui peut se décomposer de la sorte&nbsp;:</p> <pre>for i in $(seq 1 10) do let j=15*$i; let k=1024*$j echo "File: $j - Size : $k" dd if=/dev/urandom of=file_${j}MiB bs=1024 count=$k done</pre> <p>Ce qui a pour résultat&nbsp;:</p> <pre>$ ls -lh | awk '{print $5 "\t" $NF}'|tail 105M file_105MiB 120M file_120MiB 135M file_135MiB 150M file_150MiB 15M file_15MiB 30M file_30MiB 45M file_45MiB 60M file_60MiB 75M file_75MiB 90M file_90MiB</pre> http://dev.flyou.net/post/2010/01/19/Mon-petit-environnement-IRC-%3A-Creation-de-fichiers-Pipo#comment-form http://dev.flyou.net/feed/atom/comments/19 Transformer un bête fichier Texte (txt) en Portable Document Format (PDF) urn:md5:f84a80a441231f82010ee8ae4d35e091 2009-09-16T13:09:00+02:00 2009-09-16T13:11:06+02:00 Flyounet Documentations LinuxShellUnix <p>Bien sûr on commence par un&nbsp;:</p> <pre>apt-get install a2ps</pre> <p>Puis on y va direct&nbsp;:</p> <pre>a2ps --columns=1 -B -R -T2 accountHebergement_tataJeanine.txt -o - | ps2pdf - accountHebergement_tataJeanine.pdf</pre> <ul> <li>Pour <code>a2ps</code>&nbsp;: <ul> <li><code>--columns=1</code> pour que ça remplisse la feuille,</li> <li><code>-B</code> pour ne pas avoir de Header,</li> <li><code>-R</code> pour forcer la mise en page en mode Portrait,</li> <li><code>-T2</code> pour forcer les tabulations à 2 caractères,</li> <li><code>-o -</code> pour forcer l'envoi vers la sortie standard.</li> </ul></li> <li>Pour <code>ps2pdf</code>&nbsp;: <ul> <li><code>-</code> pour forcer la transformation de l'entrée standard.</li> </ul></li> </ul> http://dev.flyou.net/post/2009/09/16/Transformer-un-bete-fichier-Texte-txt-en-Portable-Document-Format-PDF#comment-form http://dev.flyou.net/feed/atom/comments/17 Webalizer et la compilation... urn:md5:cd38b9f75fdd297f73a302b32a8e1c05 2009-09-08T17:00:00+02:00 2009-09-08T18:10:50+02:00 Flyounet Documentations CompilerLinuxShellStatistiquesUnixWebalizer <p>Pour mon boulot<sup>[<a href="http://dev.flyou.net/post/2009/09/08/Webalizer-et-la-compilation#pnote-15-1" id="rev-pnote-15-1">1</a>]</sup>, j'ai un léger besoin de <a href="http://www.mrunix.net/webalizer/" hreflang="en" title="Analyse &amp; statistiques de logs Apache">Webalizer</a>. Du coup, plutôt que d'utiliser la version binaire<sup>[<a href="http://dev.flyou.net/post/2009/09/08/Webalizer-et-la-compilation#pnote-15-2" id="rev-pnote-15-2">2</a>]</sup>, j'ai besoin d'en avoir une version static<sup>[<a href="http://dev.flyou.net/post/2009/09/08/Webalizer-et-la-compilation#pnote-15-3" id="rev-pnote-15-3">3</a>]</sup>. Donc voici la ligne de configuration pour mes tests&nbsp;:</p> <pre>./configure --prefix=/tmp/webalizer-bin --enable-static --with-geodb=/tmp/webalizer-bin/geodb --enable-geoip --enable-bz2</pre> <p>Je poursuis d'un <code>make&nbsp;; make install</code> qui se banane comme une vieille bouse en m'insultant avec de vieilles vannes sur la lib <code>pthread</code>&nbsp;:</p> <pre>/usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(os_addrinfo.o): In function `__os_getaddrinfo': (.text+0x44): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(os_pid.o): In function `__os_id': (.text+0x2a): undefined reference to `pthread_self' /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(os_yield.o): In function `__os_yield': (.text+0xc9): undefined reference to `pthread_yield' /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(mut_pthread.o): In function `__db_pthread_mutex_destroy': (.text+0x38): undefined reference to `pthread_mutex_destroy' /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(mut_pthread.o): In function `__db_pthread_mutex_destroy': (.text+0x5f): undefined reference to `pthread_cond_destroy' /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(mut_pthread.o): In function `__db_pthread_mutex_unlock': (.text+0x159): undefined reference to `pthread_mutex_unlock' /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(mut_pthread.o): In function `__db_pthread_mutex_unlock': (.text+0x1c4): undefined reference to `pthread_mutex_lock' /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(mut_pthread.o): In function `__db_pthread_mutex_unlock': (.text+0x1e3): undefined reference to `pthread_cond_signal' /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/libdb.a(mut_pthread.o): In function `__db_pthread_mutex_lock': (.text+0x278): undefined reference to `pthread_mutex_lock'</pre> <p>Pour faire simple la manip est de modifier le <code>Makefile</code>&nbsp;: <br />Avant&nbsp;:</p> <pre>LIBS = -lGeoIP -lbz2 -ldb -lgd -lpng -lz -lm WCMGR_LIBS = -ldb</pre> <p>Après&nbsp;:</p> <pre>LIBS = -lGeoIP -lbz2 -ldb -lgd -lpng -lz -lm -lpthread WCMGR_LIBS = -ldb -lpthread</pre> <div class="footnotes"><h4>Notes</h4> <p>[<a href="http://dev.flyou.net/post/2009/09/08/Webalizer-et-la-compilation#rev-pnote-15-1" id="pnote-15-1">1</a>] Oui ça m'arrive d'y aller...</p> <p>[<a href="http://dev.flyou.net/post/2009/09/08/Webalizer-et-la-compilation#rev-pnote-15-2" id="pnote-15-2">2</a>] Qui est linkée dynamiquement.</p> <p>[<a href="http://dev.flyou.net/post/2009/09/08/Webalizer-et-la-compilation#rev-pnote-15-3" id="pnote-15-3">3</a>] Oui, c'est une grande invention de décideur... Je compile sur ma machine et utilise les binaires générés sur une autre qui n'a pas les libs, car c'est une machine de Production... Cherchez pas, il n'y a pas de vrai raison derrière (et je ne dis pas cela parce que le décideur vient du monde Windows).</p></div> http://dev.flyou.net/post/2009/09/08/Webalizer-et-la-compilation#comment-form http://dev.flyou.net/feed/atom/comments/15 Comment savoir si mon AIX ou mon binaire est en 64bits ou 32bits ? urn:md5:9fa1588381a42947bd217b3e63543223 2008-09-10T18:26:00+02:00 2010-04-28T00:18:00+02:00 Flyounet Documentations 32bits64bitsAIXShellUnix <p>Comme je l'ai écrit dans ce billet <q><a href="http://blog.flyounet.net/2008/09/10/bit64-Les-Joies-Du-64-Bits-Sous-Aix-Avec-Websphere" hreflang="fr" title="Mon autre vie">Les joies du 64 bits sous AIX avec WebSphere</a></q> voici quelques commandes à se rappeler&nbsp;:</p> <ul> <li>Savoir si un binaire est compilé en 64 bits&nbsp;?</li> </ul> <pre>$ dump -X64 -H path_to_binary</pre> <ul> <li>Savoir si un binaire est compilé en 32 bits&nbsp;?</li> </ul> <pre>$ dump -X64 -H path_to_binary</pre> <ul> <li>Savoir si mon hardware est en mode 64 bits&nbsp;?</li> </ul> <pre>$ getconf HARDWARE_BITMODE</pre> <ul> <li>Savoir si mon Kernel est en mode 64 bits&nbsp;?</li> </ul> <pre>$ getconf KERNEL_BITMODE</pre> http://dev.flyou.net/post/2008/09/10/Comment-savoir-si-mon-AIX-ou-mon-binaire-est-en-64bits-ou-32bits#comment-form http://dev.flyou.net/feed/atom/comments/13 Problème de Proxy avec Dotclear 2 urn:md5:82812f782cd0f720a6722786cd672af8 2008-04-09T15:47:00+02:00 2010-04-28T00:18:00+02:00 Flyounet Documentations Doc.DotclearPHP <p>Dans le billet <a href="http://forum.dotclear.net/viewtopic.php?id=23038" hreflang="fr" title="L&#039;excellent forum de Dotclear">Problème de connexion si on passe par un firewall/proxy (??)</a> (dans le forum <a href="http://forum.dotclear.net/viewforum.php?id=3" hreflang="fr">[dc1] Bugs</a>), il est fait mention de personnes ayant des difficultées car ils sont derrières une ferme de proxy (comme moi). Or les 3 peerings que j'ai au boulot font que le premier octet de l'IP de chaque proxy est différent.</p> <p>Alors voici un petit hack de rien du tout&nbsp;:</p> <p>Une rapide modification de <code>inc/clearbricks/common/lib.http.php</code> peut aider les utilisateurs de proxy.</p> <p>En modifiant la fonction <code>browserUID</code>, on peut faire un petit hack qui baisse la sécurité en remplaçant la ligne&nbsp;:</p> <pre>$uid .= substr($ip,0,strpos($ip,'.'));</pre> <p>par</p> <pre>if ($ip != 'ip_de_proxy_1' &amp;&amp; $ip != 'ip_de_proxy_2') { $uid .= substr($ip,0,strpos($ip,'.')); }</pre> <p>Etant donné que j'ai du BlueCoat comme proxy, je me base aussi sur le HTTP_X_BLUECOAT_VIA et le HTTP_VIA pour ajouter un peu de sécurité quand les IP du Proxy sont utilisées.</p> <p>Ma petite fonction browserUID est plus dans ce genre&nbsp;:</p> <pre>if ($ip != 'ip_de_proxy_1' &amp;&amp; $ip != 'ip_de_proxy_2') { $uid .= substr($ip,0,strpos($ip,'.')); } else { $uid .= $_SERVER[HTTP_X_BLUECOAT_VIA]; }</pre> <p>Cela n'est bien sûr applicable que si mon HTTP_X_BLUECOAT_VIA me renvoie toujours la même information pour un site donné (idem avec le HTTP_VIA).</p> <p>Le mieux serait que je me sorte les doigts et que je modifie l'admin pour avoir un champ 'liste de proxy' et un autre champ qui contiendrait la variable d'environnement du serveur à utiliser à la place du REMOTE_ADDR pour chaque utilisateur.</p> <p>Ce billet est aussi sur le <a href="http://forum.dotclear.net/viewtopic.php?id=33093" hreflang="fr">forum</a> de <a href="http://www.dotclear.net" hreflang="fr" title="Le site officiel">Dotclear</a>.</p> http://dev.flyou.net/post/2008/04/09/Probleme-de-Proxy-avec-Dotclear-2#comment-form http://dev.flyou.net/feed/atom/comments/8 Améliorer son utilisation de SSH (client) urn:md5:7402496ad9e35d68d7710a8365b16d70 2008-03-30T22:27:00+02:00 2008-03-31T23:05:36+02:00 Flyounet Documentations Doc.Shellssh <p>Comme beaucoup de monde, j'utilise énormément <a href="http://openssh.org/" hreflang="en" title="FREE version of the SSH connectivity tools">SSH</a> et j'ai régulièrement quatre à cinq connexions vers la même machine. Que ce soit avec différents terminaux ou en utilisant <a href="http://fr.wikipedia.org/wiki/GNU_Screen" hreflang="fr" title="Page Wikipediaque de ce multiplexeur de terminaux">GNU Screen</a> le résultat est toujours le même plusieurs connexions réseau.</p> <p>Ci-dessous on constate deux sessions établies<sup>[<a href="http://dev.flyou.net/post/2008/03/30/Ameliorer-son-utilisation-de-SSH-client#pnote-6-1" id="rev-pnote-6-1">1</a>]</sup> et deux processus distincts&nbsp;:</p> <pre>mst:~# netstat -lapute | grep ESTA | grep ssh tcp 0 0 mst:33449 syphilis:https ESTABLISHEDfly 15194011 17430/ssh tcp 0 0 mst:49494 syphilis:https ESTABLISHEDfly 15192811 17290/ssh mst:~# ps -ef | grep ssh fly 17290 4851 0 22:09 pts/8 00:00:00 ssh -p 443 fly@syphilis fly 17430 17266 0 22:55 pts/10 00:00:00 ssh -p 443 fly@syphilis</pre> <p>Maintenant, utilisons correctement SSH&nbsp;:</p> <pre>mst:~# ps -ef | grep ssh fly 17290 4851 0 22:09 pts/8 00:00:00 ssh -p 443 fly@syphilis fly 17430 17266 0 22:55 pts/10 00:00:00 ssh -p 443 fly@syphilis fly 17470 17253 0 23:30 pts/9 00:00:00 ssh -p 443 fly@syphilis mst:~# netstat -lapute | grep ESTA | grep ssh tcp 0 0 mst:33449 syphilis:https ESTABLISHEDfly 15194011 17430/ssh tcp 0 0 mst:49494 syphilis:https ESTABLISHEDfly 15192811 17290/ssh</pre> <p>Comme vous le constatez on voit trois processus, mais seulement deux connexions réseau établies. Magique non&nbsp;? Et bien non, c'est le pouvoir du <em>ControlMaster</em>.</p> <h3><em>ControlMaster</em> kesako&nbsp;?</h3> <p>Le <em>ControlMaster</em> est votre ami&nbsp;! Et en plus il vous veut du bien. Son seul défaut est qu'il existe en deux parfums&nbsp;: soit une version inférieure à la version 4 d'<a href="http://openssh.org/" hreflang="en" title="FREE version of the SSH connectivity tools">OpenSSH</a> soit la version 4 ou mieux. <br />Son principe est un peu le même que GNU Screen, il permet de multiplexer les connexions. Grosso modo, vous ouvrez une première session (donc une connexion réseau) vers une machine. Puis toute nouvelle session n'utilisera plus que la première connexion réseau établie comme on le voit ci-dessus. <br />Dans les faits, cela se traduit par une socket qui permet aux différentes sessions de se taper la discut' au travers d'une unique connexion.</p> <p>Le plus simple est de commencer avec une vielle version (et donc un goût assez old fashion). Anciennement, cette fonctionnalité de SSH était manuelle, on devait d'abord déclarer la première session comme <em>master</em> et les suivantes comme des sessions <em>normales</em>.</p> <pre>fly@mst:~$ ssh -p 443 -M -S /tmp/master-fly@siphilis\:443 fly@syphilis fly@syphilis's password: fly@syphilis:~$</pre> <p>Le paramètre <code>-M</code> est celui indiquant que l'on active le <em>ControlMaster</em>, le <code>-S /tmp/master-fly@siphilis\:443</code> indique la socket utilisée pour le multiplexage..</p> <pre>fly@mst:~$ ls -l /tmp/master-fly@siphilis\:443 srw<del></del>--- 1 fly fly 0 2008-03-30 22:09 /tmp/master-fly@siphilis:443</pre> <p>Pour ouvrir une autre session en utilisant le multiplexage, il est juste nécessaire d'utiliser la socket.</p> <pre>fly@mst:~$ ssh -p 443 -M -S /tmp/master-fly@siphilis\:443 fly@syphilis fly@syphilis:~$</pre> <p>Vous voilà donc avec plusieurs sessions SSH, mais une seule connexion réseau. En outre si vous regardez bien, la dernière phase de login juste au dessus, vous constaterez que le mot de passe n'est plus demandé. Il n'y a ici aucune clé d'utilisée, c'est simplement dû au fait que la première session est déjà authentifiée.</p> <p>Pour l'utilisation avec une version récente d'OpenSSH, apprendre le fonctionnement du fichier <code>~/.ssh/config</code> est vivement recommandé car il n'est plus nécessaire de mettre d'arguments en ligne de commande. Pour cela éditez votre <code>~/.ssh/config</code> comme suit&nbsp;:</p> <pre>Host * ControlPath /tmp/master-%r@%h:%p ControlMaster auto</pre> <p>Cette syntaxe indique que pour tous les hosts sur lesquels nous voudrons nous connecter, le <em>ConrtolMaster</em> sera en automatique. C'est à dire que si la socket identifiée par <em>ControlPath</em> n'existe pas SSH l'a créera, sinon elle sera utilisée.</p> <h2>!Remarques Importantes&nbsp;:</h2> <h3>L'utilisation du <em>ControlMaster</em> peut s'avérer néfaste pour votre sécurité&nbsp;!</h3> <p>En effet, pour peu qu'une personne ai accès à votre compte (ou bien même au compte root), il lui suffit de déclarer une des socket que vous utilisez pour que la connexion de l'usurpateur soit directement authentifiée sur la machine cible.</p> <pre>fly 17978 17962 0 21:54 pts/14 00:00:00 ssh -M -S /tmp/trut -p 443 fly@dtc</pre> <p>Comme on le voit, un simple <code>ps -ef</code> peut nous montrer la ligne de commande utilisée. Le fait d'utiliser un répertoire non sûr permettra de rapidement prendre la main sur la socket... Le mieux est d'utiliser le fichier <code>~/.ssh/config</code> qui ne laisse plus voir par un simple <code>ps</code> la socket utilisée. Personnellement, je pense que le <code>ControlPath ~/.ssh/somefile</code> est un peu plus sécurisant...</p> <h3>L'utilisation du <em>ControlMaster</em> peut vous faire perdre des données&nbsp;!</h3> <p>En effet, si pour une raison quelconque vous déconnectez la session <em>master</em>, les autres connexions resteront actives, mais si vous veniez à tuer la session <em> master</em> alors toutes vos sessions seraient perdues&nbsp;!</p> <h3>L'utilisation du <em>ControlMaster</em> peut vous faire gagner un temps précieux&nbsp;:</h3> <p>En effet, sur les machines sur lesquelles je travaille<sup>[<a href="http://dev.flyou.net/post/2008/03/30/Ameliorer-son-utilisation-de-SSH-client#pnote-6-2" id="rev-pnote-6-2">2</a>]</sup> actuellement, le handshake et l'authentification sont particulièrement lents. Du coup, avec le <em>ControlMaster</em> seul ma première authentification est lente, les autres sont instantannées.</p> <h3>Lectures utiles&nbsp;:</h3> <p>Pour ce petit document je me suis particulièrement inspiré des sites suivants&nbsp;:</p> <ul> <li><a href="http://linux-attitude.fr/post/Un-tien-vaut-mieux-que-deux-connexions" hreflang="fr">Linux Attitude</a></li> <li><a href="http://linux-attitude.fr/post/Un-tien-vaut-mieux-que-deux-connexions" hreflang="en">Speeding Up SSH</a></li> <li><a href="http://www.hsc.fr/ressources/breves/ssh_config.html.fr" hreflang="fr" title="Sur lequel est aussi expliqué la différence entre ControlMaster et ssh-agent">HSC</a></li> <li><a href="http://www.revsys.com/writings/quicktips/ssh-faster-connections.html" hreflang="en">Revolution System</a></li> </ul> <div class="footnotes"><h4>Notes</h4> <p>[<a href="http://dev.flyou.net/post/2008/03/30/Ameliorer-son-utilisation-de-SSH-client#rev-pnote-6-1" id="pnote-6-1">1</a>] Le port d'écoute est 443 (https) sur syphilis.</p> <p>[<a href="http://dev.flyou.net/post/2008/03/30/Ameliorer-son-utilisation-de-SSH-client#rev-pnote-6-2" id="pnote-6-2">2</a>] Oui, oui, ça m'arrive, mais pas plus de quelques minutes après je fatigue trop...</p></div> http://dev.flyou.net/post/2008/03/30/Ameliorer-son-utilisation-de-SSH-client#comment-form http://dev.flyou.net/feed/atom/comments/6 Que faire sous Windows quand on a pas de server X urn:md5:59cb0a2bad9dcd888b207da29eb7875f 2007-09-28T14:26:00+02:00 2008-01-18T01:36:43+01:00 Flyounet Documentations Doc.LinuxServer XWindows <p>Vous êtes dans une société qui ne vous permet pas d''utiliser XWin32&nbsp;? Qui ne veut pas payer la license pour un Exceed... Alors, plus beaucoup de solution...</p> <p>Et pourtant c''est tout simple, ça se fait en 5 étape&nbsp;:</p> <ul> <li>On va se chercher <a href="http://freedesktop.org/wiki/Xming" hreflang="en" title="Site Xming">Xming</a><sup>[<a href="http://dev.flyou.net/post/2007/09/28/Que-faire-sous-Windows-quand-on-a-pas-de-server-X#pnote-3-1" id="rev-pnote-3-1">1</a>]</sup>,</li> <li>On se télécharge les archives Xming et Xming-fonts sur <a href="http://sourceforge.net/projects/xming" hreflang="en" title="SourceForge">SourceForge</a>,</li> <li>On s''installe Xming et Xming-fonts,</li> <li>On modifie le lien d''appel à Xming en ajoutant <q>-ac</q> à la fin<sup>[<a href="http://dev.flyou.net/post/2007/09/28/Que-faire-sous-Windows-quand-on-a-pas-de-server-X#pnote-3-2" id="rev-pnote-3-2">2</a>]</sup></li> <li>On lance Xming et voilà...</li> </ul> <p>Et après&nbsp;? On demande à PuTTY de forwardé X sur localhost, et un petit <code>export DISPLAY</code> qui va bien...</p> <div class="footnotes"><h4>Notes</h4> <p>[<a href="http://dev.flyou.net/post/2007/09/28/Que-faire-sous-Windows-quand-on-a-pas-de-server-X#rev-pnote-3-1" id="pnote-3-1">1</a>] Merci l'OpenSource.</p> <p>[<a href="http://dev.flyou.net/post/2007/09/28/Que-faire-sous-Windows-quand-on-a-pas-de-server-X#rev-pnote-3-2" id="pnote-3-2">2</a>] Exemple : <code>"C:\\Program Files\\Xming\\Xming.exe" :0 -clipboard -multiwindow -ac</code></p></div> http://dev.flyou.net/post/2007/09/28/Que-faire-sous-Windows-quand-on-a-pas-de-server-X#comment-form http://dev.flyou.net/feed/atom/comments/3