walk-hoary

Spectrum, une passerelle multi-protocoles pour ejabberd

Depuis un moment, je testais quelques passerelles pour lier mon compte jabber perso aux différents protocoles existants sans trouver mon bonheur.

Je suis recement tombé sur spectrum, et j’en suis satisfait. Il gère quelques protocoles usuels et plus ! De plus sa configuration est assez simple ; voyez vous même la page wiki.

Page wiki du projet

Tags:

Gestion des scripts de démarrage init.d

Sous Debian ou Ubuntu par exemple, init gère aussi les scripts de demarrage et d’arret de vos services placés dans /etc/init.d

Un runlevel ?
Votre système évolue sur des runlevel allant de 0 à 6.
0 = Système arreté
1 à 2 = Système en mode single
3 à 5 = Système en mode multi-utilisateur (3 atteint par défaut chez debian)
6 = redemarrage du système

Les scripts ?
Ceux si sont généralement placés dans /etc/init.d/ .
Suivant le runlevel, les scripts (Qui sont des liens vers /etc/init.d/) du répertoire /etc/rcX.d/ sont appelés suivant un ordre conventionnel :
MNNnnnnn où M vaut S ou K pour start et kill si le passage du runlevel se fait en descendant ou en montant, NN est la priorité du script, 01 sera executé avant 02.. nnnn est le nom que l’on retrouve dans /etc/init.d/

exemple
/etc/rc3.d/S30mpd sera executé lorsque l’on passera du runlevel 2 à 3 après tous les autres script de priorité inférieur à 30 de ce repertoire.
/etc/rc1.d/K14mpd sera executé au passage du runlevel 2 à 1.

Comment ajouter un script toto
Placez votre script toto dans /etc/init.d/
Pour ajouter les liens afin qu’il démarre : update-rc.d toto defaults
Pour retirer les liens : update-rc.d toto remove

Tags: , ,

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.

    Je n'aime pas les boîtes noires.