Archives pour la catégorie GNU/Linux

Ê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: , , ,

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.

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: , ,

Tagguez vos mp3 en masse

Voici un outil qui vous permet de vérifier et modifier les balises ID3 de vos fichiers musicaux.

Picard : Il est proposé par MusicBrainz. S’install via apt-get sur Ubuntu. Mais existe aussi sous Windows, MAC et ses sources sont disponibles…

Voici ses fonctionnalités interresantes :

  • Source externe : Vous récupérer les tags provenant de musicbrainz et relativement completes.
  • Traitement par lot : Vous glissez vos fichiers et lancer le scan, les fichiers mal scannés peuvent être glissé dans le bon album.
  • 2 modes de scan : l’un par les tags déjà en place, l’autre par la signature musicale du fichier calcul à la volée.
  • Déplacer les fichiers dans une structure personnalisée comme « Artiste »/ »Album »/ »Numero – Titre ».
  • Déplacement des fichiers taggués : une fois scanné et détecté, vous pouvez enregistrer vos fichiers dans un autre répertoire. (Les fichiers sources sont supprimés).

Tags: , ,

Avoir un serveur mail de secours

Ayant un serveur mail postfix sur un dédié, j’ai mis en place un serveur de secours qui relaye les emails lorsque le serveur d’email n’est plus joignable.

Installez postfix en optant pour la configuration « Site internet ».

Modifier le fichier /etc/main.cf en ajoutant les directives suivantes :

relay_domains = $mydestination domaine.com
transport_maps = hash:/etc/postfix/transport

Modifier le fichier /etc/postfix/transport de façon a rediriger les emails pour les domaines souhaités vers la bonne machine :

domaine.com  smtp:monserveurmailprincipale.domaine.com

Regénérer le .db de ce fichier par :

postmap /etc/postfix/transport

Et relancez postfix :

/etc/init.d/postfix restart

Voilà ! Vous avez un serveur mail qui accèpte les emails pour votre domaine et qui les retransmet au serveur final.

N’oubliez pas d’ajouter votre nouveau serveur dans votre zone DNS en lui attribuant une priorité plus élevée que le serveur finale.

domain.com.			38400	IN	MX	5 mail.domain.com.
domain.com.			38400	IN	MX	20 mail-backup.domain.com.

Vous pouvez aussi ajouter sur ce serveur de secours votre panoplie d’anti-spam habituelle.

Tags: , , , ,

Plusieurs ip sur une interface réseau

J’ai déjà eu besoin de faire communiquer quelques pc et un serveur sur un réseau déjà existant, et sans que les nouvelles machines ne puissent communiquer avec les pc déjà en place. Pour  cela je les ai confiné dans un adressage réseau différent. Il a donc fallut que le serveur communique avec les machines déjà en place et aussi les nouvelles.

Le serveur a déjà une ip 192.168.0.1/24, nous souhaitons lui ajouter l’ip 192.168.100.1/24.

L’idée est juste de créer une nouvelle interface virtuelle sur eth0, il suffit de l’appeller eth0:0 (ou :0 peut être remplacer si vous souhaitez d’autres interfaces virtuelles par :1 etc).

Il suffit donc d’ajouter les lignes suivantes dans /etc/network/interface si vous êtes dans une debian like.

auto eth0:0
iface eth0:0 inet static
address 192.168.100.1
netmask 255.255.255.0

Et voilà, activez votre nouvelle interface, le tour est joué :

ifup eth0:0

Tags: ,

Quels codecs utilisés par ce fichier ?

il m’est arrivé plusieur fois de me demander quels étaient les codecs utilisés par un fichier video ou audio, sachez que mplayer permet de reconnaitre cela grace à la commande :

mplayer -identify -frames 0 VOTREFICHIERVIDEO

Et bien sachez qu’un script sous ubuntu le fait pour vous !

/usr/share/doc/mplayer/examples/midentify VOTREFICHIERVIDEO