lundi 23 novembre 2009

[Debian] Changer de timezone

Sur une Debian lenny pour changer le Time Zone le plus simple est d'utiliser la commande
# dpkg-reconfigure tzdata
Celui-ci va vous demander de vous localiser (choix du continent et du pays) et vous réglera votre timezone.
Cette commande remplace l'utilisation de tzconfig qui est maintenant déprécié.

mercredi 11 novembre 2009

[Linux] Comment décompresser son fichier initrd compressé en GZIP

Si la commande file /boot/initrd* vous retourne quelque chose comme ceci :
/boot/initrd.img-2.6.31-14-generic: gzip compressed data, from Unix, last modified: Wed Nov 11 16:04:33 2009
C'est que votre initrd est compressé en gzip (oui oui je sais c'est écrit juste dessus mais j'aime bien me répéter !). Donc pour le décompresser une solution (surement pas la seule) :
gunzip -dc /boot/initr* | cpio -id --no-absolute-filenames
Have fun !

dimanche 4 octobre 2009

[xen] Sortir du mode Console avec Putty et un clavier francais

Pour sortir du mode console de xen via une connexion SSH avec putty (par exemple) le [Ctrl] + []] ne fonctionne pas si votre clavier est en français. Faite donc ceci :
[Ctrl] + [$]
Et voilà ;)

mercredi 12 août 2009

[Java] The message has expired (WSSecurityEngine: Invalid timestamp The security semantics of message have expired)

Aujourd'hui j'ai buté sur une erreur ... bête !
Si vous rencontrez ce message d'erreur
The message has expired (WSSecurityEngine: Invalid timestamp The security semantics of message have expired)

Vérifier le réglage de l'heure de vos serveurs ! En effet, c'est certainement dû à un décalage beaucoup trop grand entre l'heure de votre serveur et votre client !

Bonne Prog ;)


PS : Utiliser NTP !

mardi 11 août 2009

[MySQL] ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

Aujourd'hui, j'ai eu une erreur du type : ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)
Voici comment j'ai fait pour m'en sortir :

Se connecter sur mysql
mysql -u root -p
Nous allons vérifier les privilèges de l'utilisateur debian-sys-maint avec la commande SQL suivante
SHOW GRANTS FOR 'debian-sys-maint'@'localhost';

Dans mon cas l'utilisateur n'avait pas de GRANT OPTION mais la commande suivante devrait résoudre d'autre problèmes du même ordre.
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

password est le mot de passe que vous retrouverez dans /etc/mysql/debian.cnf

Il suffit de redémarrer le serveur et tout doit fonctionner ;) !
/etc/init.d/mysql restart

dimanche 9 août 2009

[OVH] Le DynHost de OVH et updatedd

Je me suis heurté aujourd'hui à un bien grave problème. La synchronisation de mon IP dynamique (de chez SFR - anciennement neuf-cegetel) et d'un domaine OVH. Alors voilà la solution !

Tout d'abord il convient de se créer un compte DynHost. Pour cela je vous renvoi à la documentation d'OVH : http://guides.ovh.com/DynDns. Une foie notre compte créé et un domaine paramétré nous utiliserons comme le propose OVH l'utilitaire updatedd dont les sources sont téléchargeables à cette adresse : http://nongnu.askapache.com/updatedd/

Décompressons l'archive
~$ tar xvf updatedd_2.6.tar.gz


Avant d'installer l'utilitaire il convient de le modifier car il y a une petite erreur sur l'adresse de OVH. Pour cela modifier le fichier src/plugins/libovh.h.
~$ nano updatedd-2.6/src/plugins/libovh.h

A la ligne 24, il faudra modifier le ovh.com par www.ovh.com. Ainsi la ligne ressemblera à celle ci.

#define DYNDNSHOST "www.ovh.com"


Il ne nous reste qu'à installer updatedd maintenant.
~$ ./configure
~$ make
~$ su
Mot de passe :
# make install


L'utilisation pour OVH de updatedd ce passe comme suit :
updatedd ovh -- --ipv4 ip username:password host

J'ai donc rédigé un script bash pour vérifier l'IP actuelle, la comparer à l'ancienne et faire les mises à jour si c'est nécessaire. Le voici :

#!/bin/bash

## CONFIGURATION ##

# Connection to OVH DynHost
username=user
password=pass
host=my-host.tld

# How to log
# 1 = true, 0 = false
log_change=1
log_no_change=0
log_file=/var/log/dynhost.log

# File with old IP
old_ip_file=/var/cache/ip_old

# To avoid error "file not found"
touch ${old_ip_file}
touch ${log_file}


# Get Public IP
ip=`w3m -dump http://www.monip.org/ | awk -F': ' '/IP/ { print $2 }'`

# Get Old Public IP
ip_old=`cat ${old_ip_file}`


# Test if IPs are equal
if [ "${ip}" = "${ip_old}" ]
then
if [ "${log_no_change}" = "1" ]
then
echo `date`: No IP change was found >> ${log_file}
fi
else
echo ${ip} > ${old_ip_file}
if [ "${log_change}" = "1" ]
then
echo "`date`:IP has change. (Old : ${ip_old}, New : ${ip})" >> ${log_file}
updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host} >> ${log_file}
else
updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host}
fi
fi

Ensuite il suffit de placer ce script quelque part ;) (pour ma part dans /usr/local/bin) et de configurer un cron pour l'exécution périodique du script ;) !

Voilà bon courage !

PS : Je ne sais pas si j'ai fait une bonne utilisation des dossiers linux. Donc si quelqu'un d'avertis sur le sujet venait à passer par là je serai preneur d'informations !
PS2 : Le script n'est pas parfait, si j'ai du temps un jour j'en ferai un meilleur !

lundi 27 juillet 2009

[Hardware] Cart. Incorrecte sur une MPC600F de Canon

Voila la petite histoire ... on m'offre une imprimante et évidement elle ne fonctionne pas ! Bref un petit message CART.INCORRECTE me fait malice !

J'ai donc fouillé sur le web et voila la méthode que j'ai utilisé pour venir à bout de mon problème.

Tout d'abord il faut rentrer dans le SERVICE MODE. Pour cela il faut appuyer sur le bouton MENU (c'est à dire le +), puis COPY et enfin #.
MENU, COPY, #


Aller dans le menu
TEST MODE


Puis
8 PRINTER TEST


Ensuite
3. [EEPROM CLEAR]


Sélectionner
0. [INK COUNT]


Enfin appuyer sur OK
[OK]



A ce moment l'imprimante va faire du bruit. C'est bientôt fini ! Il reste à appuyer sur
[Stop/Reset] (Petit bouton rond avec un triangle)


Et enfin
[ON/OFF]


Au redémarrage de l'imprimante tout fonctionnait !

mardi 12 mai 2009

[xen] sortir du mode console

Pour sortir du mode console de xen (après un xm console 2 par exemple) il suffit de faire un
Ctrl + Alt Gr + )

et le tour est joué !

[Xen] Installation d'une debian (domU) sur une debian (dom0)

Je vais ici énoncer la procédure que j'ai employée pour installer un domU sous debian 5.0 Lenny, sur un dom0 du même type. Le réseau étant configuré en bridge et les disques gérés par LVM.

Tout d'abord créer les disques LVM. Dans l'exemple mon groupe de volumes est 'vg-00'.

#lvcreate -L 3G -n debian-domU /dev/vg-00

Ici l'option -L spécifie la taille (3 giga), -n le nom de la partition et vg-00 spécifie mon groupe de volumes.

On partitionne le disque
#mkfs.ext3 /dev/vg-00/debian-dom0


Nous allons maintenant installer notre système. Ceci va consister à montrer le système et "placer" les fichiers du système d'exploitation sur notre partition.
Montons la partition
#mount -t ext3 /dev/vg-00/debian-domU /mnt/debian-domU


Bien heureusement nous n'allons pas faire l'installation à la main c'est l'utilitaire debootstrap qui s'en chargera.
Si vous utilisez un serveur de cache de paquet .deb comme apt-cacher utilisez cette commande. (Bien evidement vous pouvez choisir un autre repo et/ou un autre port !)
#debootstrap lenny /mnt/debian-domU http://apt-cacher-host:3142/ftp.fr.debian.org/debian/

Si vous n'utilisez pas de cache la commande est sensiblement la même
#debootstrap lenny /mnt/debian-domU http://ftp.fr.debian.org/debian/


Après cette installation sans soucis, configurons notre VM ! Pour cela nous allons "chroot-er" notre disque. C'est à dire que nous allons limiter l'exécution de nos commandes à notre nouvelle debian.
#chroot /mnt/debian-domU /bin/bash


Configurons apt pour utiliser notre proxy (si vous n'avez toujours pas de proxy sautez cette étape !).
#vi /etc/apt/apt.conf.d/30proxy

Et entrez ceci (à adapter à votre configuration)
Acquire::http { Proxy "http://apt-cacher-repo:3142"; };

Ensuite éditer votre fichier sources.list à votre guise voici le mien (classique !)
deb http://ftp.fr.debian.org/debian/ lenny main
deb-src http://ftp.fr.debian.org/debian/ lenny main

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main


Installons le paquet libc6-xen
#aptitude install libc6-xen


Ensuite il faut configurer notre fstab
#vi /etc/fstab
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1


Notre installation est terminées sortons du chroot et démontons l'image.
#exit
#umount /mnt/debian-domU


Ensuite il faut créer notre fichier de configuration. (Il est aussi possible d'utiliser l'utilitaire xen-create-image mais cette méthode n'est pas détaillée ici.)



#vi /etc/xen/debian-domU.cfg

Voici le contenu de mon fichier
name="ma-debian-en-domU"

kernel="/boot/vmlinuz-2.6.26-2-xen-686"
ramdisk="/boot/initrd.img-2.6.26-2-xen-686"


root="/dev/hda1"
memory="128"

disk=['phy:/dev/vg-00/debian-domU,hda1,w']


vif=[ '' ]

dhcp="on"

extra='xencons=tty'

Voici l'explication des options :
name : nom de la machine
kernel : noyaux a utiliser pour booter (ici le noyaux est le même que celui de notre dom0 !)
ramdisk : image mémoire de démarrage (idem)
root : partition à booter (interne à la VM)
memory : mémoire ram en Mo
disk : disque interne de la VM. Ici nous utilisons notre partition LVM mais vous pouvez aussi utiliser des fichiers faisant office de disque dur, des lecteurs CD-Rom, des images iso, ...
vif : configuration du réseau. Ici vide correspond à la configuration par défaut.
dhcp : spécifie si on utilise ou non le DHCP pour récupérer notre adresse IP. Si vous ne voulez pas utiliser DHCP il vous faudra utiliser les options ip, netmask, gateway et hostname qui parlent d'elles même.
extra : spécifie une option de démarrage, (ici extra='xencons=tty' est indispensable si vous voulez pouvoir vous logger après la création de la machine).

Maintenant que tout est près finissons-en ! Pour cela xen fournit la commande xm que nous utiliserons comme suit :
#xm create -c /etc/xen/debian-domU.cfg

N'oubliez pas l'option -c qui vous attachera la machine au terminal actuel.
Vous pourrez éteindre votre machine avec xm shutdown. Pour plus d'info utilisez le man.

Bonne virtualisation !

mardi 28 avril 2009

[Ubuntu 9.04] Réactiver le ctrl + alt + backspace

Cette combinaison de touches est bien utile mais désactivée par défaut dans Ubuntu jaunty. Pour la réactiver il faut installer :
sudo aptitude install dontzap

Ensuite activer la commande comme ceci
sudo dontzap --disable

Et voila vous pouvez de nouveau utiliser ce racourci !

mercredi 8 avril 2009

[Zend Framework] Validateur Alnum et Alpha : Autoriser les espaces.

Dans la documentation officielle il est dit :


51.2.1. Alnum

Retourne true si et seulement si $value contient seulement des caractères alphabétiques et numériques. Ce validateur inclue une option permettant la validation possible des caractères espace.
51.2.2. Alpha

Retourne true si et seulement si $value contient seulement des caractères alphabétiques. Ce validateur inclue une option permettant la validation possible des caractères espace.


Mais il n'est pas dit comment faire ! Alors voila comment faire :


->addValidator('Alnum', false, array('allowWhiteSpace' => true));


Bonne validation ;)

vendredi 27 mars 2009

[Debian] Upgrade de etch à lenny

Lenny est sortie ! Et comme beaucoup j'ai voulu upgrader ma Debian etch vers cette nouvelle mouture qui m'a l'aire très intéressante ! Voici comment j'ai procédé :

Premièrement éditer votre fichier sources.list
nano /etc/apt/sources.list


Ce fichier configure la liste des dépôts que doit gérer apt-get/aptitude. Ainsi pour upgrader vers lenny il ne vous faut que changer tout les terme etch par lenny (il en est de même pour sid mais je n'ai pas testé).

Une foi le fichier sauvegardé on fait un petit
aptitude update

qui remet à jours la liste interne des paquets disponibles sur les serveurs.
Nous mettons ensuite à jours les logiciels d'installation comme ceci
aptitude install apt dpkg aptitude

Pour enfin mettre tout le système à jours avec cette commande
aptitude full-upgrade

jeudi 26 mars 2009

[IRC] Créer un channel sur freenode

Pour enregistrer un channel sur freenode il faut tout d'abord avoir un nom d'utilisateur enregistré.

Pour enregistrer son nom d'utilisateur on procède comme ceci

--> Enregistrer le login

/msg nickserv register mon_mot_de_passe mon_email@qqch.com


--> Vous pouvez cacher votre adresse mail avec cette commande

/msg nickserv set hidemail on


--> Pour s'identifier

/msg nickserv indentify mon_mot_de_passe


Le nom de votre channel doit respecter une convention :

- Si votre channel est officiel il doit commencer par #

- Si votre channel n'est pas officiel il doit commencer pas ##

Tout d'abord connectons nous à notre channel

/JOIN #mon_channel


Si vous êtes le seul sur ce channel vous serrez op sinon il vous faudra demander les droit op à un autre op !

Nous allons enfin pouvoir enregistrer notre channel. Pour ceci nous utilisons cette commande :

/msg ChanServ register #mon_channel


A ce moment là votre channel vous est lié et il est donc créé !!

mercredi 21 janvier 2009

[Linux] Tenir son serveur à l'heure !

Suite au commentaire de Ghislain sur mon post sur le même thème j'ai décidé de rectifier le tir avec celui ci.

Comme proposé par Ghislain il faut donc installer le paquet ntp

aptitude install ntp

Celui ci lance un démon (ntpd) qui tien le serveur à l'heure mais à la différence de mettre un ntpdate dans une crontab celui ci ne "saute" pas directement à la nouvelle heure dans un retard est détecté. Il accélère l'horloge de la machine !

Pourquoi ? C'est très simple. Admettons que nous utilisons un programme qui se base sur le timestamp Unix pour rafraichir ses informations et que dans la procédure de rafraichissement il se base sur les informations du dernier rafraichissement (vous me suivez oO ?).

Si on utilise ntpdate il sautera directement à l'heure actuelle. On n’effectuera donc pas certain rafraîchissement. Alors qu'avec le démon ntpd tous les rafraîchissements seront effectués.


Pour finir voici mon fichier /etc/ntp.conf qui n'a rien de compliqué.


# Ou est stocker les informations de décalage
driftfile /var/lib/ntp/ntp.drift

statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Serveur ntp
# Par defaut
server ntp.univ-lyon1.fr default
# Autre
server 0.debian.pool.ntp.org
server 1.debian.pool.ntp.org
server 2.debian.pool.ntp.org
server 3.debian.pool.ntp.org

# Autorise les utilisateurs de réseau à ce servir de cette machine comme serveur de temps
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap


lundi 12 janvier 2009

[Apache2] Décoposition du resultat d'une regex

Enfaite ce post ne vas pas vraiment parler de comment décomposer le résultat d'un regex dans apache2 pour la simple et bonne raison que je n'ai pas trouvé comment faire et encore moins si c'était possible. Je vais donc plutôt vous parler de la méthode que j'ai employée pour contourner mon problème.

J'ai des utilisateurs que nous nommerons romain, tintin et milou.
Ils ont chacun un dossier personnel du type : /home/"première lettre"/"première et deuxième lettre"/"nom".

Exemple :
pour tintin : /home/t/ti/tintin
Pour milou : /home/m/mi/milou


Dans leur dossier personnel ils ont un dossier public_html où ils peuvent mettre leur site web.

Mon but est de ne pas à avoir à créer un alias pour chacun d'eux. (Vous aurez reconnu mes aptitudes [d'Informaticien|de faignant] !)

La première solution que j'ai trouvée est de faire un lien symbolique depuis le DocumentRoot d’apache vers le dossier de l'utilisateur. Mais ceci n'est pas ce que je cherchais car il me faut toujours configurer ce lien à la main !

J'ai donc décidé d'utiliser la directive AliasMatch d’apache2 comme ceci.
AliasMatch "^/(.)(.)(.*)/(.*)" "/home/$1/$1$2/$1$2$3/public_html/$4"
AliasMatch "^/(.))(.*)" "/home/$1/$2/$1$2$3/public_html"
La deuxième ligne permet de rediriger l'utilisateur même s'il ne met pas le / après le nom.
De cette façon je n'ai pas à traiter la chaine récupérée pour en extraire la première, puis la deuxième lettre mais simplement à concaténer les chaines récupérées.

Il vous faudra peux être aussi revoir les droits de visibilité. Je vous laisse ce que j'ai fait mais ne m'y attarderai pas dessus.
<DirectoryMatch "^/home/(.)/(.){2}/(.*)/public_html/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
</DirectoryMatch>



Toujours est-il que si quelqu'un sait s’il est possible, ou mieux, comment faire pour décomposer une chaine récupéré depuis AliasMatch je suis preneur !

Sur ce ...