<?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>Emile "iMil" Heitor 's home &#187; Unix</title>
	<atom:link href="http://imil.net/wp/tag/unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://imil.net/wp</link>
	<description>life, unix and stuff</description>
	<lastBuildDate>Wed, 08 Feb 2012 22:31:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>au-to-ma-gic</title>
		<link>http://imil.net/wp/2010/02/13/au-to-ma-gic/</link>
		<comments>http://imil.net/wp/2010/02/13/au-to-ma-gic/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 23:08:59 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=387</guid>
		<description><![CDATA[Au boulot, j&#8217;ai élu une solution de déploiement à haute teneur en convivialité qui m&#8217;a été suggérée par nico, j&#8217;ai nommé fabric.
Ce soft à l&#8217;utilisation simplissime permet en un tournemain de réaliser des opérations complexes en masse sur une architecture distante en utilisant le protocole SSH.
Si la documentation de la plupart des fonctions est clarissime, [...]]]></description>
			<content:encoded><![CDATA[<p>Au boulot, j&#8217;ai élu une solution de déploiement à haute teneur en convivialité qui m&#8217;a été suggérée par <a href="http://www.rottenbytes.info/">nico</a>, j&#8217;ai nommé <a href="http://docs.fabfile.org/0.9.0/">fabric</a>.</p>
<p>Ce soft à l&#8217;utilisation simplissime permet en un tournemain de réaliser des opérations complexes en masse sur une architecture distante en utilisant le protocole <a href="http://fr.wikipedia.org/wiki/Secure_Shell">SSH</a>.</p>
<p>Si la documentation de la plupart des fonctions est clarissime, l&#8217;une d&#8217;entre elles, qui pourtant me semblait avoir un fort potentiel loutresque, n&#8217;était pas très clairement exposée: <code>upload_template</code>.<br />
Cette fonction, comme son nom semble l&#8217;indiquer, permet d&#8217;envoyer sur un serveur distant un fichier &#8220;template&#8221; en ayant préalablement remplacé des variables par le contenu souhaité. Après un peu de lecture du code source de <i>fabric</i>, la subtilité de son utilisation m&#8217;est apparue.</p>
<p>Voici à quoi doit ressembler un fichier template, j&#8217;utilise ici l&#8217;exemple classique d&#8217;un <code>/etc/network/interfaces</code> à remplir avec les valeurs adéquates :</p>
<pre>
auto lo
iface lo inet loopback

auto %(iface)s
iface %(iface)s inet static
	address %(ipaddress)s
	netmask %(netmask)s
	gateway %(gateway)s
</pre>
<p>Ces variables utilisent les <i>string interpolation formatting</i> de python, que l&#8217;on renseigne à l&#8217;aide d&#8217;un <i>dict</i> de cette façon :</p>
<pre>
netinfo  = {
                'iface': 'eth0',
                'ipaddress': '10.20.30.40',
                'netmask': '255.255.255.0',
                'gateway': '10.20.30.254'
}
</pre>
<p>Et que l&#8217;on inclut finalement dans la fameuse fonction <code>upload_template</code> de cette façon :</p>
<pre>
        upload_template('etc/network/interfaces', '/etc/network/interfaces', context=netinfo, use_sudo=True)
</pre>
<p>Moyennant quoi, <i>fabric</i> enverra le fichier <i>template</i> sur sa destination puis remplacera les variables par leur valeurs définies dans le <i>dict</i> passé en paramètre.</p>
<p>Sysop, ne révèle pas à tes employeurs que tu construis aujourd&#8217;hui ta glande de demain.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2010/02/13/au-to-ma-gic/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>split vertical et screen</title>
		<link>http://imil.net/wp/2008/07/04/split-vertical-et-screen/</link>
		<comments>http://imil.net/wp/2008/07/04/split-vertical-et-screen/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 08:28:21 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=208</guid>
		<description><![CDATA[Il y a quelques jours, un collègue m&#8217;apprenait l&#8217;existence d&#8217;un soft basé sur gnome-terminal, terminator, permettant de diviser un terminal horizontalement et verticalement. J&#8217;en parle sur #gcu, et on me signifie que screen est capable de splitter verticalement (le split horizontal était implémenté depuis longtemps) dans sa version current, présente dans debian/unstable. Étant d&#8217;une nature [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques jours, un collègue m&#8217;apprenait l&#8217;existence d&#8217;un soft basé sur <code>gnome-terminal</code>, <a href="http://www.tenshu.net/terminator/">terminator</a>, permettant de diviser un terminal horizontalement et verticalement. J&#8217;en parle sur #gcu, et on me signifie que <code>screen</code> est capable de splitter verticalement (le split horizontal était implémenté depuis longtemps) dans sa version current, présente dans debian/unstable. Étant d&#8217;une nature loutresque, je décidais donc d&#8217;ecrire un <code>screenrc</code> spécifique qui démarrerait screen en mode splitté avec 4 fenetres (deux en haut, deux en bas). Je m&#8217;aperçois alors que le <code>man</code> de <code>screen</code> ne mentionne nulle part comment spécifier ce comportement dans une conf. C&#8217;est en fouillant dans le <a href="http://git.savannah.gnu.org/gitweb/?p=screen.git;a=commitdiff;h=ee51fe58adee19357375b007e0e81e37317773b8">repository git de screen</a> que je lis :</p>
<pre>
+  {
+    char *args[2];
+    args[0] = "-v";
+    args[1] = 0;
+    SaveAction(ktab + '|', RC_SPLIT, args, 0);
+  }
</pre>
<p>Et effectivement, la directive <code>split -v</code> réalise exactement ce que je souhaitais. Finalement, pour obtenir ceci :</p>
<p><img src="/gfx/transscreen.png"/></p>
<p>Il faut utiliser la syntaxe suivante dans votre <code>screenrc</code> :</p>
<pre>
split
split -v
focus bottom
split -v
</pre>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/07/04/split-vertical-et-screen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Command and conquer</title>
		<link>http://imil.net/wp/2008/01/21/command-and-conquer/</link>
		<comments>http://imil.net/wp/2008/01/21/command-and-conquer/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 19:56:11 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=177</guid>
		<description><![CDATA[Et tant qu&#8217;on est dans les ssheries, connaissez-vous sshmenu applet ? J&#8217;ai découvert ce petit outil à insérer dans une barre gnome voila un an et j&#8217;en suis devenu fan. Ce dernier vient enfin d&#8217;arriver dans debian/lenny, et via un ajout dans l&#8217;apt source-list, c&#8217;est également installable sur une ubuntu.
Petit screenshot :


]]></description>
			<content:encoded><![CDATA[<p>Et tant qu&#8217;on est dans les ssheries, connaissez-vous <code>sshmenu</code> applet ? J&#8217;ai découvert ce petit outil à insérer dans une barre gnome voila un an et j&#8217;en suis devenu fan. Ce dernier vient enfin d&#8217;arriver dans debian/lenny, et via <a href="http://sshmenu.sourceforge.net/download/deb_repo.html">un ajout</a> dans l&#8217;apt <code>source-list</code>, c&#8217;est également installable sur une ubuntu.</p>
<p>Petit screenshot :</p>
<p><img src="/gfx/sshmenu.png"/></p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/01/21/command-and-conquer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bounce-bounce-bounce-bounce</title>
		<link>http://imil.net/wp/2008/01/21/bounce-bounce-bounce-bounce/</link>
		<comments>http://imil.net/wp/2008/01/21/bounce-bounce-bounce-bounce/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 18:33:20 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=176</guid>
		<description><![CDATA[Sur zone0, j&#8217;ai des domUs dont le ssh n&#8217;est pas accessible depuis Internet. Habituellement, je ssh sur le dom0 puis rebondis. Et puis je me suis souvenu de cette news de Reefab qui pointait une astuce à base de nc. Voici une version compactée et un peu modifiée de la doc en question :
Sur le [...]]]></description>
			<content:encoded><![CDATA[<p>Sur zone0, j&#8217;ai des domUs dont le ssh n&#8217;est pas accessible depuis Internet. Habituellement, je <code>ssh</code> sur le dom0 puis rebondis. Et puis je me suis souvenu de <a href="http://www.gcu.info/1677/2005/11/16/BOUNCE-BOUNCE/">cette news de Reefab</a> qui pointait <a href="http://www.hackinglinuxexposed.com/articles/20040830.html">une astuce</a> à base de <code>nc</code>. Voici une version compactée et un peu modifiée de la doc en question :</p>
<p>Sur le client :</p>
<pre>
imil@tatooine:~$ cat bin/netcat-proxy-command
#!/bin/sh
bouncehost=$1
target=$2
port=$3

ssh $bouncehost nc -w 1 $target $port
</pre>
<p><code>nc</code> devra evidemment etre installé sur le serveur de rebond (ici, le dom0).<br />
Voici enfin un exemple de <code>.ssh/config</code> :</p>
<pre>
host cible.gcu.info
Hostname 192.168.0.1
HostKeyAlias cible.gcu.info
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
ProxyCommand bin/netcat-proxy-command rebond.gcu.info %h 2222
</pre>
<p>Moyennant quoi :</p>
<pre>
$ ssh cible.gcu.info
Warning: Permanently added 'cible.gcu.info' (RSA) to the list of known hosts.
Enter passphrase for key '/home/imil/.ssh/id_dsa':
NetBSD 4.0 (GENERIC.NOACPI) #0: Sun Dec 16 00:56:55 PST 2007

Welcome to NetBSD!

imil@cible:~$ ifconfig ne2|grep inet\\
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
</pre>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/01/21/bounce-bounce-bounce-bounce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push the playlist on</title>
		<link>http://imil.net/wp/2008/01/05/push-the-playlist-on/</link>
		<comments>http://imil.net/wp/2008/01/05/push-the-playlist-on/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 11:35:27 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[vibe]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=174</guid>
		<description><![CDATA[Ptite magouille.
Pour bruler mes CDs audio, j&#8217;utilise gnomebaker. Il est pratique, rapide, intuitif, et il fonctionne. Ce dernier est capable d&#8217;enregistrer des &#8220;projets&#8221;, qui correspondent en l&#8217;occurrence à un fichier XML contenant les informations sur la playlist que vous allez graver.
J&#8217;avais pas envie de coder un truc, j&#8217;ai donc opté pour du scripting de feignant. [...]]]></description>
			<content:encoded><![CDATA[<p>Ptite magouille.</p>
<p>Pour bruler mes CDs audio, j&#8217;utilise <code>gnomebaker</code>. Il est pratique, rapide, intuitif, et il fonctionne. Ce dernier est capable d&#8217;enregistrer des &#8220;projets&#8221;, qui correspondent en l&#8217;occurrence à un fichier XML contenant les informations sur la playlist que vous allez graver.</p>
<p>J&#8217;avais pas envie de coder un truc, j&#8217;ai donc opté pour du scripting de feignant. La première brique s&#8217;appelle <code>xmlstarlet</code>, un outil command line qui permet de manipuler du XML. Un petit coup de <code>sed | nl</code> permettra de mettre un peu d&#8217;ordre.<br />
Enfin, Nous ferons appel à <i>ImageMagick</i> et plus particulièrement <code>convert</code> pour générer une image avec cette sortie. Ce qui nous donne :</p>
<pre>
#!/bin/sh

SIZE="800x600"
FONTSIZE="14"

COVER=`xmlstarlet sel -t -m "//file" -v "@path" -n $1 | sed -r 's,.*/(.+)\\.mp3,\\1\\n,'|nl -n ln -w 3 -s'- '`

convert -size ${SIZE} -stroke black -pointsize ${FONTSIZE} -draw "text 5,20 \\"$COVER\\"" xc:white output.png
</pre>
<p>Y&#8217;a plus qu&#8217;à tuner un peu.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/01/05/push-the-playlist-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ce ne sont pas ces dro&#xEF;des que vous recherchez.</title>
		<link>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/</link>
		<comments>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/#comments</comments>
		<pubDate>Sat, 26 May 2007 19:35:15 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[lighttp]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=133</guid>
		<description><![CDATA[Sur mon serveur perso, par d&#xE9;finition, y&#8217;a des trucs perso. De plus, &#xE0; l&#8217;approche d&#8217;une soci&#xE9;t&#xE9; nouvelle, il n&#8217;est pas superflu de prendre quelques mesures afin de pr&#xE9;server un semblant d&#8217;intimit&#xE9;.
Pour cela, les bons g&#xE9;nies de l&#8217;Internet on cr&#xE9;&#xE9;, il y a bien longtemps, SSL.
Mais voila, il y a d&#8217;autres trucs et bidules que je [...]]]></description>
			<content:encoded><![CDATA[<p>Sur mon serveur perso, par d&#xE9;finition, y&#8217;a des trucs perso. De plus, <a href="http://www.lemonde.fr/web/article/0,1-0@2-651865,36-915090@51-886229,0.html">&#xE0; l&#8217;approche d&#8217;une soci&#xE9;t&#xE9; nouvelle</a>, il n&#8217;est pas superflu de prendre quelques mesures afin de pr&#xE9;server un semblant d&#8217;intimit&#xE9;.<br />
Pour cela, les <a href="http://wp.netscape.com/eng/security/SSL_2.html">bons g&#xE9;nies de l&#8217;Internet</a> on cr&#xE9;&#xE9;, il y a bien longtemps, <a href="http://fr.wikipedia.org/wiki/SSL">SSL</a>.<br />
Mais voila, il y a d&#8217;autres trucs et bidules que je souhaite pouvoir exposer en place publique. J&#8217;entreprend donc de jouer avec les directives de <a href="http://trac.lighttpd.net/trac/wiki/Docs%3AConfigurationOptions">lighttpd</a> pour cr&#xE9;er des exclusions et autres redirections.<br />
Le lien qui eclaire tout, c&#8217;est <a href="http://trac.lighttpd.net/trac/wiki/HowToRedirectHttpToHttps">celui l&#xE0;</a>. En substance, nous allons rediriger tout ce qui matche <i>mon.host.magique</i> et faire passer ce traffic en SSL.<br />
Voici la conf :</p>
<p>On d&#xE9;clare le serveur TLS :</p>
<pre>
$SERVER["socket"] == "mon.host.magique:443" {
  ssl.engine = "enable"
  ssl.pemfile = "/etc/ssl/certs/lighttpd.pem"
  server.document-root = "/vers/www/magique"
  server.name = "mon.host.magique"
  auth.backend.htpasswd.userfile = "/path/vers/lighttpd-htpasswd.user"
  auth.require = ( "/" =>
    (
       "method" => "basic",
       "realm" => "ce ne sont pas ces dro&#xEF;des que vous recherchez.",
       "require" => "valid-user"
    )
  )
}
</pre>
<p>Puis la redirection, tout ce qui arrive sur le port 80 du host &#8220;mon.host.magique&#8221; sera redirig&#xE9; vers son &#xE9;quivalent en HTTPS. On note les regexps compatibles Perl qui nous permettent de r&#xE9;cup&#xE9;rer l&#8217;URL compl&#xE8;te.</p>
<pre>
$SERVER["socket"] == "mon.host.magique:80" {
  $HTTP["host"] == "mon.host.magique" {
    url.redirect = ( "^/(.*)" => "https://mon.host.magique/$1" )
    server.name = "mon.host.magique"
  }
}
</pre>
<p>Et enfin les restrictions gentilles, on n&#8217;applique pas de restrictions &#xE0; host1.host.magique, unautre.host.magique et blip.host.magique car ils ont leur propre d&#xE9;claration dans le fichier <code>lighttpd.conf</code>. Pour le reste, seuls la racine, le repertoire <code>public</code> ainsi que les fichiers .php et .jpg sont autoris&#xE9;s.</p>
<pre>
$HTTP["host"] !~ "(host1|unautre|blip).host.magique" {
  server.document-root = "/var/ou/c/est/mignon"
  $HTTP["url"] !~ "(^/$|^/public|php$|jpg$)" { url.access-deny = ( "" ) }
}
</pre>
<p>C&#8217;est quand m&#xEA;me un peu bien.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>merde, j&#8217;ai pas de backup&#8230;</title>
		<link>http://imil.net/wp/2007/03/24/merde-jai-pas-de-backup/</link>
		<comments>http://imil.net/wp/2007/03/24/merde-jai-pas-de-backup/#comments</comments>
		<pubDate>Sat, 24 Mar 2007 14:28:15 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[I.T.]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=120</guid>
		<description><![CDATA[Combien de fois cette phrase a retenti dans vos esprits imprudents ? dans mon esprit imprudent à moi, plein.
Alors, comme je viens de toper un kimloli sur les conseils de mon bouquetin favori, je me suis dit que, pour une fois, j&#8217;y collerais bien une procedure de backup propre.
J&#8217;ai déjà parlé et probablement pasté ici [...]]]></description>
			<content:encoded><![CDATA[<p>Combien de fois cette phrase a retenti dans vos esprits imprudents ? dans mon esprit imprudent à moi, plein.<br />
Alors, comme je viens de toper un <a href="http://www.kimsufi.com/">kimloli</a> sur les conseils de mon bouquetin favori, je me suis dit que, pour une fois, j&#8217;y collerais bien une procedure de backup propre.</p>
<p>J&#8217;ai déjà parlé et probablement pasté ici même un petit script gentil qui, grâce au couple <i>rsync / rsyncd</i>, permettait de rendre cette opération relativement rapide assez simplement. J&#8217;y ai apporté quelques modifs et enrobé le tout d&#8217;un chouillat de sécu. Un chouillat j&#8217;ai dit, trépigne pas spoty.</p>
<p>Le kimloli est un FreeBSD 6.2, j&#8217;y installe <i>rsync</i> via les ports.<br />
Le backup est fait sur une bête workstation Ubuntu, chez moi. J&#8217;y installe <i>rsync</i> via <i>apt-get</i>.</p>
<p>Voici les differentes étapes que j&#8217;ai suivi pour préparer mon rsyncd sur ma machine à backuper :</p>
<p>Activation du rsync dans inetd :</p>
<pre>
# grep rsync /etc/inetd.conf
# backup
rsync           stream  tcp     nowait  root    /usr/local/bin/rsync rsyncd --daemon --config=/usr/local/etc/rsyncd.conf
</pre>
<p>Interdiction d&#8217;y accéder d&#8217;ailleurs que de ma ligne DSL qui dispose d&#8217;une IP fixe :</p>
<pre>
ALL : localhost ip.publique.dsl : allow
rsync : ALL : deny
</pre>
<p>Configuration du demon <i>rsync</i></p>
<pre>
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log

uid = root
gid = wheel
use chroot = no
max connections = 1
syslog facility = local5

[homes]
        path = /home
        comment = Homes
	# seul utilisateur autorisé
        auth users = bkp
        secrets file = /usr/local/etc/rsyncd.secrets
        hosts allow = ip.publique.dsl
[usr_local]
        path = /usr/local
        comment = usr local directories
        auth users = bkp
        secrets file = /usr/local/etc/rsyncd.secrets
        hosts allow = ip.publique.dsl
</pre>
<p>Créaction du très simple fichier d&#8217;authentification <i>/usr/local/etc/rsyncd.secrets</i> :</p>
<pre>
bkp:mangemoitoute
</pre>
<p>Activation de <i>inetd</i> au démarrage :</p>
<pre>
# grep inetd /etc/rc.conf
inetd_enable="YES"
</pre>
<p>Et on démarre tout ce petit monde :</p>
<pre>
# /etc/rc.d/inetd start
</pre>
<p>La conf serveur est prête. Coté client, je vous propose ce script :</p>
<pre>
#!/bin/sh

# Simple rsync client script
# if "console" is specified, verbose output and --delete are implied
# iMil <imil @gcu.info>

RSYNC="/usr/bin/rsync"

usage()
{
        echo "usage: $0 <console |cron> <host> <remote label> <local directory>"
        exit 1
}

if [ $# != 4 ]
then
        usage
fi

HOST=$2
FROM=$3
TO=$4
EXCLUDE="/home/bkp/rsync.exclude"
SECRET="/home/bkp/rsync.secret"
USER="bkp"

OPTIONS="--compress -a --recursive --times --perms --links"

if [ -f ${EXCLUDE} ]; then
        OPTIONS="${OPTIONS} --exclude-from=${EXCLUDE}"
fi
if [ -f ${SECRET} ]; then
        OPTIONS="${OPTIONS} --password-file=${SECRET}"
fi

case $1 in
        console)
                CONSOLE="--verbose --progress --stats --delete"
                ;;
        cron)
                CONSOLE=""
                ;;
        *)
                usage
                ;;
esac

CMD="${RSYNC} ${CONSOLE} ${OPTIONS} ${USER}@${HOST}::${FROM} ${TO}/${FROM}"

echo running: ${CMD}

eval ${CMD}
</local></remote></host></console></imil></pre>
<p>On crée le fichier <i>/home/bkp/rsync.secret</i> qui contiendra UNIQUEMENT le mot de passe précisé dans le fichier secret du serveur, puis <i>/home/bkp/rsync.exclude</i> qui est composé de la liste des fichiers et repertoires à exclude, par exemple :</p>
<pre>
/home/ftp
/home/mirror
*access_log
*error_log
</pre>
<p>On teste en console :</p>
<pre>
bin/bkp.sh console kimloli212 usr_local /home/bkp/kimloli
</pre>
<p>Et si tout va bien, on <i>cron</i> :</p>
<pre>
0 2 * * * /home/bkp/bin/bkp.sh cron kimloli212 homes /home/bkp/kimloli
</pre>
<p>Joyeux backups<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2007/03/24/merde-jai-pas-de-backup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>tin, 23%&#8230;</title>
		<link>http://imil.net/wp/2005/11/04/tin-23/</link>
		<comments>http://imil.net/wp/2005/11/04/tin-23/#comments</comments>
		<pubDate>Fri, 04 Nov 2005 09:20:52 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=61</guid>
		<description><![CDATA[Problème :
Tu as, sur ta machine chez toi, démarré une application graphique qui n&#8217;a pas de pendant console et tu es curieux de savoir à combien de poucents en est le&#8230; la&#8230; COMPILATION. Ta machine est bien evidemment située derrière une gate quelconque dont la seule particularité est de disposer d&#8217;un access ssh accessible.
&#8220;Damn foukine [...]]]></description>
			<content:encoded><![CDATA[<p>Problème :</p>
<p>Tu as, sur ta machine chez toi, démarré une application graphique qui n&#8217;a pas de pendant console et tu es curieux de savoir à combien de poucents en est le&#8230; la&#8230; COMPILATION. Ta machine est bien evidemment située derrière une gate quelconque dont la seule particularité est de disposer d&#8217;un access ssh accessible.</p>
<p>&#8220;Damn foukine shit&#8221;, te dis-tu, &#8220;Ca va etre une tannée pas croyable&#8221;</p>
<p>Que nenni</p>
<p>Solution (qui suppose que tu as un VNC server qui tourne sur ta workstation) :</p>
<p>sur la machine client<br />
<code><br />
$ ssh -L 2222:gate:22 -L 2223:workstation:22 gate cat -<br />
^Z<br />
$ bg<br />
$ cat .ssh/config<br />
host workstation<br />
hostname 127.0.0.1<br />
port 2223<br />
$ vncpasswd<br />
$ vncviewer -via workstation workstation:0<br />
</code></p>
<p>woohoo !<br />
tin&#8230; 23%&#8230; ca avance pas.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/11/04/tin-23/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>local</title>
		<link>http://imil.net/wp/2005/10/28/local/</link>
		<comments>http://imil.net/wp/2005/10/28/local/#comments</comments>
		<pubDate>Fri, 28 Oct 2005 10:38:03 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[sendmail]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=60</guid>
		<description><![CDATA[update
Non seulement ce qui est ecrit ci dessous est faux mais en plus ca ne marche absolument pas.
En réalité il suffisait de spécifier à la classe w de chercher tous les attributs sendmailMTAClassName=w dans l&#8217;arbre, soit :

define(`confCW_FILE', `@ldap: -k sendmailMTAClassName=w -v sendmailMTACLassValue')

dans le fichier .mc
C&#8217;est pris à la volée et ca marche impeccablement bien.
P&#8217;tit tip [...]]]></description>
			<content:encoded><![CDATA[<p><b>update</b></p>
<p>Non seulement ce qui est ecrit ci dessous est faux mais en plus ca ne marche absolument pas.<br />
En réalité il suffisait de spécifier à la classe w de chercher tous les attributs sendmailMTAClassName=w dans l&#8217;arbre, soit :<br />
<code><br />
define(`confCW_FILE', `@ldap: -k sendmailMTAClassName=w -v sendmailMTACLassValue')<br />
</code><br />
dans le fichier .mc</p>
<p>C&#8217;est pris à la volée et ca marche impeccablement bien.</p>
<p>P&#8217;tit tip en passant, pour verifier tes local-host-names :<br />
<code><br />
echo '$=w' | sendmail -bt<br />
</code><br />
<strike><br />
Je me demandais pourquoi donc après avoir ajouté des hosts dans la classe sendmailMTAClassName=w (équivalent de local-host-names), les mails à destination de ces derniers étaient refusés / non relayés si je ne restartais pas sendmail. En fait, et c&#8217;est très ennuyeux, il faut effectivement restarter sendmail pour que la classe w soit reloadée. MAIS ASTUCE ! je viens également d&#8217;apprendre <a href="http://www.ofb.net/~jheiss/sendmail/proxy.shtml">ici</a> qu&#8217;on peut  elegamment remplacer le fichier classique des domaines locaux par une entrée dans la mailertable et dans l&#8217;access.db pour authoriser son relay. En LDAP ca nous donne :<br />
<code><br />
# mailer, sendmail, gcu.info.dotpure.net<br />
dn: sendmailMTAMapName=mailer,ou=sendmail,dc=gcu.info,dc=dotpure,dc=net<br />
objectClass: top<br />
objectClass: sendmailMTA<br />
objectClass: sendmailMTAMap<br />
objectClass: sendmailMTAMapObject<br />
sendmailMTACluster: dotpure.net<br />
sendmailMTAKey: gcu.info<br />
sendmailMTAMapName: mailer<br />
sendmailMTAMapValue: local:<br />
<br />
# access, sendmail, gcu.info.dotpure.net<br />
dn: sendmailMTAMapName=access,ou=sendmail,dc=gcu.info,dc=dotpure,dc=net<br />
objectClass: top<br />
objectClass: sendmailMTA<br />
objectClass: sendmailMTAMap<br />
objectClass: sendmailMTAMapObject<br />
sendmailMTACluster: dotpure.net<br />
sendmailMTAMapName: access<br />
sendmailMTAKey: gcu.info<br />
sendmailMTAMapValue: RELAY<br />
</code><br />
c&#8217;est beau hein :)<br />
</strike><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/10/28/local/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>procmail, mon ami pour la vie</title>
		<link>http://imil.net/wp/2005/10/24/procmail-mon-ami-pour-la-vie/</link>
		<comments>http://imil.net/wp/2005/10/24/procmail-mon-ami-pour-la-vie/#comments</comments>
		<pubDate>Mon, 24 Oct 2005 21:01:58 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[procmail]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=59</guid>
		<description><![CDATA[Voila quelques temps que je demandais comment automatiser le provisionning de mes users virtuels sachant que je veux utiliser le format maildir pour stocker les mails. Original: la solution s&#8217;appelle procmail. Je n&#8217;en savais rien et pourtant procmail propose le format maildir depuis belle lurette semble-t-il. Voici un petit procmailrc qui crée automatiquement le home [...]]]></description>
			<content:encoded><![CDATA[<p>Voila quelques temps que je demandais comment automatiser le provisionning de mes users virtuels sachant que je veux utiliser le format maildir pour stocker les mails. Original: la solution s&#8217;appelle procmail. Je n&#8217;en savais rien et pourtant procmail propose le format maildir depuis belle lurette semble-t-il. Voici un petit procmailrc qui crée automatiquement le home du user ainsi que son repository maildir, une petite astuce est nécessaire pour délivrer effectivement le premier mail reçu :<br />
<code><br />
[~] cat /usr/local/etc/procmailrc<br />
DROPPRIVS=yes<br />
<br />
# virtual provisionning, users may not have homedirs<br />
:0<br />
* ? /bin/test -d $HOME || /bin/mkdir -p $HOME<br />
{<br />
}<br />
<br />
:0<br />
* ? /bin/test -d $HOME/Maildir || /bin/mkdir -p $HOME/Maildir<br />
{<br />
        :0<br />
        $HOME/Maildir/<br />
}<br />
</code><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/10/24/procmail-mon-ami-pour-la-vie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: imil.net @ 2012-02-09 09:24:55 by W3 Total Cache -->
