Archive auto-extractible ou le package universel

Lorsqu’on doit livrer des scripts ou des programmes, on constitue un « package ». C’est la solution classique, mais elle est dépendante de l’OS ou de la distribution utilisée: il faut créer autant de paquet que d’OS (au format txz, deb, rpm, lpp, pkg, etc.). On peut aussi envoyer un fichier au format « tgz » ou « tar.gz » avec une procédure d’installation, mais faire de la doc, c’est chiant.
Continue reading

Compilateur de scripts shells

j’ai découvert dernièrement shc qui est un compilateur de scripts. Il convertit différents types de scripts (sh, csh, ksh, bash ou perl) en un binaire exécutable. Il possède plusieurs options de chiffrement pour éviter de tracer le binaire. Il peut même générer des binaires avec une date d’expiration: utile pour gagner de l’argent grâce à vos talents de développeur 🙂.

Il est compatible avec la plupart des OS de type Unix (AIX, BSD, Linux, Solaris).
Cela peut être la solution lorsque des scripts contiennent des informations sensibles.

Synchronisation de dossier sur un serveur FTP

Voici un petit script qui permet de  synchroniser un dossier local sur un serveur FTP.  Il utilise lftp et c’est très pratique si rsyncd ou ssh n’est pas disponible sur le serveur.

Si le dossier n’existe pas sur le serveur distant, il est créé automatiquement et comme l’option « delete » est activée, on s’arrête à la moindre erreur avec l’option --max-errors=0. Il faudra modifier les variables ftphost, ftpuser et ftppass pour s’adapter à votre configuration.

#!/bin/sh
#
# $Id$
ftphost="ftp.server.org"
ftpuser="my_username"
ftppass="my_password"
source="$1"
destination="$2"
rc=1

if [ -z "$source" -o -z "$destination" ] ; then
        echo "usage: $(basename $0) source destination"
        exit $rc
fi

if [ -e "$source" ] ; then
        lftp --max-errors=0 -c "
        set ftp:list-options -a
        open ftp://$ftpuser:$ftppass@$ftphost
        lcd $source
        mkdir -f -p $destination
        cd $destination
        mirror --reverse --verbose --delete"
        rc=$?
fi
exit $rc