<?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; shell</title>
	<atom:link href="http://imil.net/wp/tag/shell/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>sysutils/shelldap dans les bacs</title>
		<link>http://imil.net/wp/2011/02/04/sysutilsshelldap-dans-les-bacs/</link>
		<comments>http://imil.net/wp/2011/02/04/sysutilsshelldap-dans-les-bacs/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 22:00:49 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[pkgsrc]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://imil.net/wp/2011/02/04/sysutilsshelldap-dans-les-bacs/</guid>
		<description><![CDATA[Connaissez-vous shelldap ? Cet outil absolument indispendable est L&#8217;Outil que j&#8217;attendais depuis des années. Saoulé que j&#8217;étais de la machine-à-coredumps gq et de l&#8217;usine à gaz lat, j&#8217;implorais les Dieux du code de faire apparaître quelque part sur l&#8217;internet convivial un outil pratique pour éditer des bases LDAP, possiblement en console, fou optimiste que je [...]]]></description>
			<content:encoded><![CDATA[<p>Connaissez-vous <a href="http://projects.martini.nu/shelldap">shelldap</a> ? Cet outil absolument indispendable est L&#8217;Outil que j&#8217;attendais depuis des années. Saoulé que j&#8217;étais de la machine-à-coredumps <code>gq</code> et de l&#8217;usine à gaz <code>lat</code>, j&#8217;implorais les Dieux du code de faire apparaître quelque part sur l&#8217;internet convivial un outil <strong>pratique</strong> pour éditer des bases LDAP, possiblement en console, fou optimiste que je suis.</p>
<p>Et bien cet outil existe. Et il est énorme. Comme son nom l&#8217;indique, il s&#8217;agit effectivement d&#8217;un shell-like destiné à la consultation et l&#8217;administration de bases LDAP, avec la completion s&#8217;il vous plait.</p>
<p>Constatant avec effroi que ce formidable logiciel n&#8217;était pas encore présent dans <a href="http://www.netbsd.org/docs/software/packages.html">pkgsrc</a>, je me suis fendu d&#8217;un nouveau package, et <code>shelldap</code> est donc désormais disponible sous <a href="http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/sysutils/shelldap/?only_with_tag=MAIN">sysutils/shelldap</a>.</p>
<p>C&#8217;est cadeau, ça m&#8217;fait plaisir.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/02/04/sysutilsshelldap-dans-les-bacs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Regexp du soir, espoir</title>
		<link>http://imil.net/wp/2008/12/05/regexp-du-soir-espoir/</link>
		<comments>http://imil.net/wp/2008/12/05/regexp-du-soir-espoir/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 23:06:17 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[BeastieBox]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=240</guid>
		<description><![CDATA[Dans ma tentative de conquete du monde, je suis confronté à un problème auquel je n&#8217;avais pas immédiatement pensé. En effet, une foule d&#8217;outils partagent sans vergogne certains noms de fonction (usage(), help(), error()&#8230;) et de variables globales. Cet ennuyeux constat aboutit evidemment à des problèmes de linkage et faisait lamentablement foirer la compilation de [...]]]></description>
			<content:encoded><![CDATA[<p>Dans ma <a href="http://beastiebox.sourceforge.net/">tentative de conquete du monde</a>, je suis confronté à un problème auquel je n&#8217;avais pas immédiatement pensé. En effet, une foule d&#8217;outils partagent sans vergogne certains noms de fonction (usage(), help(), error()&#8230;) et de variables globales. Cet ennuyeux constat aboutit evidemment à des problèmes de <i>linkage</i> et faisait lamentablement foirer la compilation de mon <a href="http://beastiebox.cvs.sourceforge.net/viewvc/beastiebox/beastiebox/">BeastieBox</a> cheri.</p>
<p>Une solution evidente était de renommer ces fonctions et leurs appels. mais&#8230;</p>
<pre>
imil@obana:~/src/beastiebox/beastiebin/sh$ grep 'error(' *.c|wc -l
      95
</pre>
<p>Flemme quoi.</p>
<p>Je me suis donc fendu de même pas 10 lignes de shell/perl qui serviront peut-être au voyageur perdu :</p>
<pre>
#!/bin/sh

usage()
{
        echo "usage: $0 &lt;type&gt; &lt;function|variable&gt; &lt;prefix&gt;"
        echo "type : &lt;func|var&gt;"
        exit 1
}

[ $# -lt 3 ] &#038;&#038; usage

type=$1
item=$2
prefix=$3

preprx="^|\s+|=+\s*|\(.+?\)\s*|\(\s*"

for file in *.[ch]
do
        if [ "$type" != "var" ]; then
                perl -pi.bkp -e "s/(${preprx})${item}(\s*\()/\1${prefix}_${item}\2/g" $file
        else
                perl -pi.bkp -e "s/(${preprx}|[\+\-\*\/\>\< \%\^\|\!\&#038;\~\[\.]+)${item}(\s*[^a-z0-9\-_\(])/\1${prefix}_${item}\2/gi" $file
        fi
done
</pre>
<p>L&#8217;outil s&#8217;utilise de cette façon :
</pre>
<pre>
$ commonfunc.sh func pouet prefixe
</pre>
<p>ou</p>
<pre>
$ commonfunc.sh var variable prefixe
</pre>
<p>Chaque appel et déclaration de la fonction <i>pouet</i> sera remplacé par <i>prefixe_pouet</i>. Même principe pour les variables. Un backup suffixé "bkp" sera créé pour chaque fichier modifié, permettant ainsi de réaliser un petit <i>diff</i> de verification.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/12/05/regexp-du-soir-espoir/feed/</wfw:commentRss>
		<slash:comments>0</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>
	</channel>
</rss>

<!-- Served from: imil.net @ 2012-02-09 09:41:12 by W3 Total Cache -->
