Un gestionnaire de projet

Le gestionnaire de projet redmine est passé en version stable 1.0.0. Je l’ai donc mis à jour sur http://labs.qth.fr .

J’y stocke les différents projets qui ne sont pas attachés à une autre forge. Voici les quelques projets :

  • Pizza : Un serveur pour install-party faisant proxy-cache-dépots de distribution de façon transparante…
  • FileTransferManager : Un gestionnaire de transfert en arrière plan basé sur un démon bash.
  • Table Touch : Une table ou dalle tactile basée sur de l’infrarouge et une webcam.
  • QTH : Les outils des serveurs QTH que je partage.
  • http://labs.qth.fr

    Tags: , ,

    Être averti des connexions SSH

    Vous avez un serveur SSH, il peut être  interessant d’être notifié lorsque quelqu’un se connecte sur votre serveur / votre machine.

    Remplacez votre@email par l’email voulu.

    Voici un bout de code à mettre à la fin de votre ~/.bashrc des comptes concernés :

    SSH_CONNECTION_CLIENT_IP=`echo $SSH_CONNECTION | cut -d" " -f1`
    SSH_CONNECTION_CLIENT_HOSTNAME=`host $SSH_CONNECTION_CLIENT_IP | cut -d" " -f5`
    SSH_CONNECTION_CLIENT_PORT=`echo $SSH_CONNECTION | cut -d" " -f2`
    SSH_CONNECTION_SERVEUR_IP=`echo $SSH_CONNECTION | cut -d" " -f3`
    SSH_CONNECTION_SERVEUR_HOSTNAME=`host $SSH_CONNECTION_SERVEUR_IP | cut -d" " -f5`
    SSH_CONNECTION_SERVEUR_PORT=`echo $SSH_CONNECTION | cut -d" " -f4`
    SSH_CONNECTION_LOGIN=`whoami`
    SSH_CONNECTION_HOST=`hostname`
    SSH_CONNECTION_HEURE=`date`
    SSH_CONNECTION_LOAD=`cat /proc/loadavg`
    SSH_CONNECTION_OS=`cat /proc/version | cut -d"#" -f1`
    SSH_CONNECTION_LISTWHO=`who`
    echo -e "Accès Shell sur $SSH_CONNECTION_LOGIN@$SSH_CONNECTION_HOST depuis $SSH_CONNECTION_CLIENT_IP ($SSH_CONNECTION_CLIENT_HOSTNAME)
    ------------------------------------
    IP client     : $SSH_CONNECTION_CLIENT_IP :$SSH_CONNECTION_CLIENT_PORT ($SSH_CONNECTION_CLIENT_HOSTNAME)
    IP Serveur    : $SSH_CONNECTION_SERVEUR_IP :$SSH_CONNECTION_SERVEUR_PORT ($SSH_CONNECTION_SERVEUR_HOSTNAME)
    Heure serveur : $SSH_CONNECTION_HEURE
    Load average  : $SSH_CONNECTION_LOAD
    OS            : $SSH_CONNECTION_OS
    Connexions    :
    $SSH_CONNECTION_LISTWHO
    ------------------------------------" | mail -s "Accès Shell sur Accès Shell sur $SSH_CONNECTION_LOGIN@$SSH_CONNECTION_HOST depuis $SSH_CONNECTION_CLIENT_IP ($SSH_CONNECTION_CLIENT_HOSTNAME)" votre@email &

    Tags: , ,

    Créer un patch

    Voici deux commandes toutes simples lorsque vous souhaitez diffuser une modification d’un code ou l’appliquer :

    Vous souhaitez diffuser une modification d’un code

    Soit monFichier.php un fichier modifié en ayant pris soin d’avoir sa version « normale » disons sous le nom monFichier.php.original et monPatch.diff le patch de sortie que va être crée.

    diff -c monFichier.php.original monFichier.php > monPatch.diff

    Vous souhaitez appliquer un patch

    patch < monPatch.diff

    A retenir

    Vous pouvez concaténer les patch dans un seul fichier (Et donc les visualiser par un editeur de texte).

    L’option -p pour patch permet de situer où appliquer le patch. (-p 1 : repertoire courant, -p 0 : repertoire courant et recursivement les autres, -p 2 : appliquer dans le repertoire courant en ignorant le premier niveau dans le patch…).

    Vous pouvez gzipper pour gagner en place tel que

    diff gnagna1.c gnagna2.c > gzip gnagna.diff.gz
    

    et

    zcat gnagna.diff.gz | patch

    Tags: , ,

    Une netinstall sans internet, pourquoi des mises à jour non plus ?

    Il est temps que je vous présente un script que j’utilise dans le GUL auquel je participe : un script pour squid.

    Le but final ? C’est de réaliser des installs, de boots par le réseau et faire les dernières mises à jours lorsque la connexion internet est médiocre voir même innexistante.

    Pour ça, on utilise déjà squid qui permet de « cacher » les fichiers téléchargés, mais nous utilisons aussi des dépots locaux sur un poste que nous gardons le plus à jour possible lors de l’install-party. Le script ne fait que traduire à squid les emplacement équivalents locaux pour des url normalement sur internet.

    Ainsi, http://archive.ubuntu.com/dists/ devient http://10.9.0.72/ubuntu/dists/ pour squid. C’est donc transparent pour les utilisateurs.

    Vous êtes intéressés, rendez vous sur la page du projet :

    http://projects.qth.fr/projects/squidrepository

    Tags: , , ,

    Split

    Vous voulez découper le plus simplement possible un fichier ? Dans mon cas, il s’agit de fait passer un fichier de 16Go sur une partition FAT32.

    Et bien utilisez juste split pour le découpage et cat pour l’assemblage :

    split 2GB FichierADecouper.iso FichierDecoupe.part.
    cat FichierDecoupe.part.* > FichierADecouper.iso

    Ici split va découper le fichier FichierADecouper.iso en fichiers de 2Mo nommés FichierDecoupe.part.** où ** va de aa à zz. (Utilisé l’option -d pour avoir de 00 à 99).

    Tags: , , ,

    Espace disque

    Quel est l’esspace disque utilisé par les point de montage :

    df -h

    Quel est l’espace occupé par un repertoire précis :

    du -h /home/user

    Quel est l’espace occupé par les répertoires de /home/user  :

    du -h --max-depth=1 /home/user

    Vous pouvez bien sût utiliser cette commande sans préciser le chemin, cela aura pour effet d’utiliser le répertoire courant.

    Utiliser un OS sans le démarrer

    Il arrive parfois où l’on a besoin de booter sur un GNU/linux sans pouvoir le démarrer. (grub cassé, kernel panic, fichiers de boot blocants…)

    Voici comment contourner ce problème si vous pouvez booter sur une autre distribution (même un live-cd). Dans la cas suivant sda1 est la partition boot et sda2 est la partition systeme du système que l’on souhaite utiliser.

    • mkdir /media/distribCassee
    • mount /dev/sda2 /media/distribCassee
    • mount /dev/sda1 /media/distribCassee/boot
    • mount -t proc /proc /media/distribCassee/proc
    • mount -o bind /dev /media/distribCassee/dev
    • mount -o bind /sys /media/distribCassee/sys
    • chroot /media/distribCassee

    Et voilà ! Vous êtes dans votre système cassé. Vous pouvez lancer vos applications ou réparer ce que vous voulez.

    Comme par exemple réinstaller le grub après l’installation d’un os monopilsateur :

    install-grub /dev/sda
    

    A noter que les points de montage /dev /boot et /proc ne sont pas toujours nécéssaires.

    Monter une image ISO

    Très simple :

    mount -o loop /home/user/moniso.iso /mnt/cdrom

    Tags:

    Partage de connexion sous GNU/Linux

    Voici un memo pour partager votre connexion internet sur votre PC.

    Ici eth0 est l’interface accedant à internet, eth1 est l’interface du réseau local qui doit acceder à internet via eth0. On va utiliser l’ip forwarding, très simple…

    Prérequis : Vous avez un serveur DHCP sur eth1 ou êtes déjà en ip statiques.

    Activer l’ip forwarding

    Prise en compte instantannée :

    echo 1 > /proc/sys/net/ipv4/ip_forward

    Pour que cela soit actif à chaque boot :

    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

    Activez le partage

    Prise en compte instantannée:

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    Pour que cela soit permanant :

    echo "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE" >> /etc/network/if-up.d/ip-forward
    chmod 755 /etc/network/if-up.d/ip-forward

    Voilà ;)

    Tags: , ,