@matn

Mon bloc note perso sur les systèmes UNIX & GNU/Linux, le développement et... la photo.

Aller au contenu | Aller au menu | Aller à la recherche

22mar. 2010

Ethernet bonding sous debian

... pour assurer le failover en cas de rupture d'un lien réseau.

# apt-get install ifenslave-2.6

Éditer /etc/network/interfaces:

iface bond0 inet static
address 10.1.1.5
netmask 255.255.255.0
network 10.1.1.0
gateway 10.1.1.254
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1

Commenter les lignes correspondant au interfaces physiques eth*

Ajouter les lignes suivantes au fichier /etc/modprobe.d/arch/i386:

alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200

22mar. 2010

Reset password root mysql

# /etc/init.d/mysql stop
# mysqld_safe --skip-grant-tables &
# mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD(“newrootpassword”) where user=’root’;
mysql> flush privileges;
mysql> quit

# /etc/init.d/mysql stop
# /etc/init.d/mysql start
# mysql -u root -p

19mar. 2010

MacOS X Terminal : changer les couleurs utilisée par la commande "ls"

ajouter dans votre fichier .profile:

alias ls='ls -G'
export LSCOLORS=DxGxcxdxCxegedabagacad

17fév. 2010

Fabric

Je viens de découvrir Fabric, un très bon outil de déploiement écrit en python.

Il existe un package dans les repository ubuntu mais celui-ci correspond à une (très) ancienne version de fabric, le mieux est de l'installer avec easy_install:

aptitude install python-setuptools
easy_install fabric

Vous trouverez ici quelques exemple de script fabric.

09fév. 2010

Python: obtenir le hostname de sa machine

Petit bout de code bien pratique pour obtenir son hostname:

import socket
print socket.gethostbyaddr(socket.gethostname())   
résultat:
('test.toto.com', ['toto'], ['ip'])
donc un simple:
socket.gethostbyaddr(socket.gethostname())[0]
devrait le faire...

09fév. 2010

Python: connexion à une base de données Postgresql avec psycopg2

Simple et efficace:

import sys

try:
    import psycopg2
except:
    print "psycopg2 n'est pas installe: apt-get install python-psycopg2"
    sys.exit()

database="dbname"
user="username"
password="password"
host="hostname"

requete="select * from matable"

try:
    conn = psycopg2.connect("dbname=%s user=%s host=%s" % (database,user,host));
    cur = conn.cursor()
    cur.execute(requete)
    rows=cur.fetchall()
    for value in rows:
        print value
except psycopg2.OperationalError:
    print "erreur de connexion a la base de donnees"
    sys.exit(1)
except:
    print "erreur lors de l'execution de la requete"
    sys.exit(1)

Pour redhat, le package psycopg2 est disponible dans le repository EPEL:

  • rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
  • yum install python-psycopg2

Vous trouverez ici les spec de la Database API Python.

05fév. 2010

Changement d'encoding avec Iconv

Pour changer l'encoding d'un fichier ou d'une chaine vous pouvez utiliser iconv:

echo "éé" |iconv --to-code UTF8

20janv. 2010

Subversion: retour à une version précédente d'un fichier

Pour passer de la révision 351 à 12, exemple:

svn merge --dry-run -r 351:12 log4j.xml
svn merge -r 351:12 log4j.xml
svn commit -m "retour a la revision 12"

Pour connaitre le diff entre les deux révisions:

svn diff -r 351:12 log4j.xml

11janv. 2010

Fusionner plusieurs pdf avec ghostscript

gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=output.pdf -dBATCH  doc1.pdf doc2.pdf

01déc. 2009

Liste des utilitaires que j'installe après déploiement d'un nouveau serveur

Ci-dessous une liste des utilitaires que je déploie sur chacun de mes serveurs (Debian pour la plupart).

Au minimum:

  • openntpd: permet de garder le serveur à l'heure
  • logcheck: analyse les logs et génère des rapports mail avec les informations intéressantes.
  • upgrade-system: un script qui utilise apt/deborphan pour garder le système à jour.
  • apticron: script cron qui envoie la liste des mise a jour disponibles pour votre système.
  • aide: détecte les changements dans les fichiers du système. Utile pour détecter les intrusions.
  • vim: version améliorée de l'éditeur de texte VI.
  • denyhosts: (ou fail2ban) bloque les attaques bruteforce ssh en ajoutant des entrées dans /etc/hosts.deny
  • screen: permet de faire tourner plusieurs terminaux sur un seul.
  • sysstat (sar,iostat...): indispensable pour avoir le maximum d'indicateurs sur l'état du système (IO, CPU ...)
  • munin-node: agent munin, pour la supervision du serveur.
  • unzip: pour dézipper...
  • psmisc (fuser, killall, pstree, peekfd)
  • subversion: pour le versionning des fichiers de conf du serveur.
  • rsync: copie différentielle de fichiers à distance.
  • libwww-perl: utilisé par le plugin apache de munin-node
aptitude install openntpd logcheck upgrade-system apticron aide vim denyhosts screen sysstat munin-node unzip psmisc subversion rsync libwww-perl


en option:

  • htop: version améliorée de l'utilitaire "top"
  • tcpdump: capture du trafic réseau
  • make: :-)
  • lshw: information sur le matériel
  • ethtool: obtenir des infos sur la carte réseau (vitesse...)
  • iproute: amélioration des outils réseau...
  • dmidecode: description du matériel (pratique pour obtenir le servicetag d'un serveur dell...)
  • pwgen: générateur de mot de passe
  • pv: peut être inséré dans tout tube entre deux processus pour afficher visuellement la rapidité de transfert de données entre les processus, le temps mis, la quantité effectuée ainsi qu'une estimation de la date/heure de fin
  • hdparm: visualiser/modifier les paramètres des disques dur
  • strace: trace les appels système que fait un programme

28nov. 2009

Tunnels SSH

Pour le SMTP:

ssh -N -f login@ssh-gateway.com -L9025:serveur.mail.com:25 sleep 60

le serveur devient accessible via localhost:9025

et pour l'IMAP:

ssh -N -f login@ssh-gateway-ssh.com -L9143:serveur.mail.com:143 sleep 60

le serveur devient accessible via localhost:9143

16nov. 2009

Réinitialiser un password root perdu :)

  • (re)démarrer la machine
  • une fois sous grub, sélectionner l'os à booter et pressez "e" (edit)
  • sélectionnez la ligne "kernel" et pressez "e"
  • ajoutez "single init=/bin/bash" en fin de ligne
  • pressez "enter" puis "b" pour booter l'os.
  • remontez le filesystem en rw à l'aide de la commande: "mount -o remount,rw /"
  • exécutez "passwd" afin de changer le mot de passe
  • "reboot"

15nov. 2009

Alias SSH

Un exemple vaut mieux qu'un long discours :)

ssh monutilisateur@rXXXXX.ovh.net <-- lourd

editer le fichier: ~/.ssh/config
ajouter:

host myserver
    Hostname rXXXXX.ovh.net
    User monutilisateur

et hop, on tape maintenant:

ssh myserver

manpage ssh_config: ici

15nov. 2009

Mac OS Finder: afficher les fichiers cachés

Dans un terminal:

defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

Pour cacher les fichiers:

defaults write com.apple.finder AppleShowAllFiles FALSE
killall Finder

03nov. 2009

Postgresql: requêtes sur une base de données distante avec db_link

dblink est un module qui permet de se connecter à d'autres bases de données PostgreSQL™ depuis une session de base de données.

Installation des contrib-postgresql

Afin de pouvoir utiliser db_link in faut installer les "contrib" postgresql. Pour cela:
apt-get install postgresql-contrib-8.3
ou
cd ~/sources/postgresql-8.2.3/contrib/dblink
make
make install

Ajout des fonctions dblink à la base de données

su postgres
psql -d testgis -f /opt/pgsql/share/contrib/dblink.sql

Création d'une connexion à la base de données distante

SELECT * from dblink_connect('connexion_autre_base','hostaddr=10.1.1.1 port=5432 dbname=autre_base user=test password=test');

Exécution d'une requête

SELECT * FROM dblink('connexion_autre_base','SELECT id,userid,homedir FROM users',true) AS foo(id int,userid text,homedir text) ORDER BY id;

Fermeture de la connexion

SELECT * from dblink_disconnect('connexion_autre_base');

01nov. 2009

Support de Groovy & Grails sur AppEngine


Guillaume Laforge à propos du support Groovy/Grails sur AppEngine.

15oct. 2009

Augmenter Entropie

Lorsque votre système n'a pas assez d'entropie pour pouvoir générer suffisamment de nombres aléatoires - pour générer une clé GPG par exemple - deux solutions: La première est de générer suffisamment de "bruit" sur la machine par exemple en faisant un find /. Ca marche... mais ça prend pas mal de temps :-) La seconde, est d'installer le paquet rng-tools.

Vous pouvez connaitre l'entropie disponible grâce à la commande: sysctl kernel.random.entropy_avail

13oct. 2009

"Passeport pour UNIX et C"

UNIX et C Je viens de terminer la lecture du bouquin "Passeport pour UNIX et C" et j'ai trouvé vraiment pas mal. Ce bouquin m'a permis de faire la poussière sur les quelques connaissances C acquises au cours de mes études et d'apprendre pas mal de nouvelles choses ;-) A noter que même si le bouquin est clairement orienté dev, la première partie (10 premiers chapitres) me parait intéressante pour les Sysadmins en herbe. Est abordé dans cette partie: les systèmes de fichiers, les processus (avec leurs états, l'ordonnancement... ), le scripts shell et les commandes UNIX standards. Bref, que du bon!

09oct. 2009

Cloner une partition avec Netcat et dd

Les commandes suivante permettent d'envoyer les données du server1 vers le serveur2. On peut ainsi cloner une partition:

Server2# nc -l 12345 | dd of=/dev/sdb1
Server1# dd if=/dev/sda1 | nc server2 12345

et en y ajoutant de la compression:

Server2# nc -l 12345 | gzip -dc | dd of=/dev/sdb1
Server1# dd if=/dev/sda1 | gzip | nc server2 12345

09oct. 2009

SSH et authentification par clé

Tout est dans le titre :)

ssh-keygen
cat ~/.ssh/id_rsa.pub | ssh test@10.1.1.1 "cat - >> ~/.ssh/authorized_key"

et hop:

ssh test@10.1.1.1

- page 1 de 5