mercredi, 31 mars 2010

Synchronisation de l'heure

Plutôt un mémo qu'autre chose étant donné que l'information traîne partout sur le net; voici comment synchroniser votre machine avec un serveur de temps. La configuration du temps sur une machine se fait à deux niveaux:

  • Le niveau système
  • Le niveau matériel

Synchronisation au coup par coup

Voyons à présent comment mettre rapidement à jour notre machine.

1ère méthode

la commande ntpdate vise à synchroniser l'heure système. La syntaxe est ainsi:

flopc ~ # ntpdate unserveur.de.temps.com

Vous trouverez ici une liste de serveur de temps français http://www.cru.fr/services/ntp/serveurs_francais

La commande hwclock quand à elle, permet de fixer l'heure système. La syntaxe est :

flopc ~ # hwclock --systohc

Cette commande vise à synchroniser l'heure matérielle sur l'heure système que nous venons tout juste de mettre à jour. Voila, votre machine est à présent synchronisée.

2ème méthode

Je place en deuxième position cette méthode car je ne suis pas parvenu à trouver la commande sous Ubuntu par exemple voici donc la méthode de faignant qui regroupe les deux actions en une seule commande :-)

flopc ~ # ntpclockset unserveur.de.temps.com

exmple:

flopc ~ # ntpclockset 192.168.10.1
>>> Current clock sync:
before: 2010-03-31 22:43:40.040632000000000000
after:  2010-03-31 22:43:40.072847596892498433

>>> Now setting clock ...   [ok]
>>> Writing time to hardware clock ...   [ok]

>>> New clock sync:
before: 2010-03-31 22:43:42.515547000000000000
after:  2010-03-31 22:43:42.515603280360944568
flopc ~ # 

Synchronisation au quotidien

C'est bien joli tout ça mais on envisage mal aller régulièrement sur le serveur pour effectuer la synchronisation. c'est maintenant qu'entre en jeu le daemon ntp, j'ai nommé ntpd. Cette méthode est bien évidement la plus pratique et recommandée à mettre en œuvre.

Il vous suffira donc d'installer le package correspondant à votre distribution. D'une manière générale j'ai pu observer que les installations par défaut définissaient des serveurs de temps à interroger. La configuration du serveur de temps est définie dans le fichier ntp.conf dans le répertoire /etc. C'est dan ce même fichier que vous allez préciser les serveurs de temps que votre client devra interroger afin de se synchroniser.

Si le fonctionnement du protocole NTP ainsi que la mise en œuvre de son architecture vous intéresse, je ne peux que vous conseiller l'excellent article présentant ce dernier sur Wikipédia.

Liens connexes:

jeudi, 5 novembre 2009

Google Wave : l'outil collaboratif de google

Juste un petit passage histoire de vous présenter la nouvelle solution de google fraichement sortie, j'ai nommé Google wave. N'ayant pu pour le moment le tester car dans l'attente d'une activation de compte je vous encourage à regarder la vidéo de présentation de cet outil.

Dans les grandes lignes il s'agit d'une solution regroupant une nouvelle forme de messagerie (un mix entre messagerie instantanée, mail, et forum), des outils de travail collaboratif et de partages de données.

Pour le moment les inscriptions ne se font que sur le bon vieux principe des invitations ( et ces dernières sont extremement rares...).

Cerise sur le gateau de cet outil : c'est Open Source ! il vous sera donc possible d'installer sur votre serveur personnel Google wave.

Sans plus attendre voici donc la vidéo de présentation de la bête: Google Wave Preview At Google I/O 2009

samedi, 5 septembre 2009

[Oracle] Verifier état d'un utilisateur

Je dois souvent vérifier l'état d'un compte utilisateur posant problème sur des bases Oracle. Il faut donc vérifier le statut du compte au cas ou le compte serait bloqué ou encore mal configuré.

Lire la suite...

vendredi, 4 septembre 2009

Convertir WMA vers OGG

J'ai retrouvé, il y a peu, quelques vestiges de ma (lointaine) époque sous Windows: des répertoires entiers remplis de fichiers WMA.

J'ai donc entrepris de réaliser un script me permettant d'encoder rapidement tout ça et d'en faire des fichiers au format ogg. Comme vous allez le voir dans le script il faut procéder en deux étapes et encoder le fichier une première fois en wav pour ensuite convertir ce même fichier au format final ogg.

Voici donc ce que j'ai utilisé pour réaliser cette opération.

#!/bin/sh
start_script=$(date +'%T')
###
# On récupère le chemin
###
PATH_DIR="$1"
CHECK="" 
###
# Au besoin on ajoute un / a la fin du chemin fourni
###
if [ -d ${PATH_DIR} ] && [ -z $(echo ${PATH_DIR} | grep -e '/$') ]
then 
	PATH_DIR=$1"/"
fi
 
function usage() {
echo "
$0 /path/dir/[file.wma]
$0 doit etre suivi d'un fichier ou repertoire contenant les fichiers wma à convertir
"
}
 
###
#On verifie les arguments passés aux script
###
if [[ $# -lt 1 ]]
	then
	echo "argument manquant"
	usage
	exit 1
fi
 
###
# On vérifie le chemin mentionné
###
 
 
if [ ! -f "${PATH_DIR}" ] && [ ! -d "${PATH_DIR}" ]
	then
	echo "Le chemin spécifié n'existe pas"
	exit 1
fi
 
###
# On génère la liste des fichiers à encoder
###
 
find "${PATH_DIR}" -iname "*.wma" | sed -e 's/^\.\///g' > $PATH_DIR"files_list"
 
###
# On récupère le nombre de fichiers à encoder
###
file_total=$(awk 'END { print NR }' "${PATH_DIR}"files_list)
 
 
###
# Pour chaque fichier wma trouvé
###
 
while [[ i -lt $file_total ]]
do
	echo ""
	((i++))
	file_name=$(awk 'NR=='$i'{print $0}' "${PATH_DIR}"files_list)
	start_file=$(date +'%T')
	echo "echo 'extraction du fichier source'; mplayer -vo null -ao pcm:file=\""$file_name".wav\" \""$file_name"\" 1>/dev/null; echo 'OK'" | sh
	echo "echo 'conversion au format OGG'; oggenc -q  5 -o \"$(echo ${file_name} | cut -d. -f1).ogg\" \""$file_name".wav\" 2>/dev/null; echo 'OK'" | sh
 
###
# Suppression du fichier temporaire
###
	rm -f "$file_name".wav
	end_file=$(date +'%T')
	diffSec=$(( $(date --date $end_file +%s) - $(date --date $start_file +%s) ))
	echo "fichier extrait : $(echo ${file_name} | cut -d. -f1).ogg"
	echo "durée de l'encodage : "$((diffSec%60))sec
done
 
end_script=$(date +'%T')
###
# Bilan de l'action
###
diffSec=$(( $(date --date $end_script +%s) - $(date --date $start_script +%s) ))
echo " durée du traitement : "$((diffSec/60))"min"$((diffSec%60))sec
echo "nombre de fichiers convertis : "$file_total
 
 
rm -f $PATH_DIR"files_list"

Voila; le script est relativement commenté; et certainement perfectible. pour ma part j'ai rencontré un bug pour les fichiers dont le nom comporte plus d'un espace consécutif( " "). il est largement envisageable de rajouter une fonction visant a renommer les fichiers posant problèmes et supprimer les esapces en trop.

En éspérant que ça puisse aider/inspirer des gens.

Très Cordialement :)

samedi, 15 août 2009

[ Irssi ] ajouter une fenetre de notification

Utilisant irssi couplé avec screen pour ne pas manquer une miette du monde merveilleux de l'IRC :-); j'ai cherché un moyen d'améliorer la notification présente par défaut. Voici la solution que j'ai retenu.

il vous suffit de récupérer le script hilightwin.pl et de le copier dans le répertoire ~/.irssi/script/autorun/ de votre compte utilisateur.

Afin d'activer le script au démarrage de votre client tapez la commande suivante:

/run autorun/hilightwin.pl

voila à présent le script lancé. Ne reste plus qu'à créer la fenêtre dans laquelle seront affichées les notifications. Pour ce faire :

/window new split
/window name hilight
/window size 6

ça c'est fait. On définit enfin les occurrences qui déclencheront l'affichage dans la fenêtre (votre login par exemple)

/hilight flo|va-nu-pied

voila; à présent; dès que quelqu'un prononcera le mot que vous aurez défini dans une des fenêtres de votre client irssi; celle-ci apparaîtra automatiquement dans la partie supérieure de votre navigateur.

Liens connexes:

http://quadpoint.org/articles/irssi#hilight_window

mardi, 4 août 2009

[awk] parser /etc/services

Je cherchais un moyen de mettre en forme un script qui interrogeais mon fichier /etc/services voila donc une petite ébauche. Ce script utilise la commande awk d'une façon primaire mais introduit une syntaxe relativement pratique au quotidien.
on distingue, dans notre cas, deux parties. La première délimitée par des // contient une occurrence que nous cherchons. il est à noter que ce champ supporte les expressions régulières et est donc hautement configurable en fonction de votre besoin.
La deuxième partie de la commande permet de mettre en forme la sortie de la commande.
Maintenant que nous avons vu un peu comment était constitué la sytanxe de la commande awk passons au script.

#!/bin/sh
 
# emplacement du fichier services
FILE="/etc/services"
 
# numéro du port ou nom du service
PORTNUMBER="$1"
 
awk '/\t'$1'\/|^'$1'/{print "service = "$1; print "port/type = "$2;$1 = "";$2 = "";print "Description = "$0;print ""}' $FILE

me reste a régler quelques petits truc mais ça fonctionne plutôt bien :

flopc sh # ./services_parser.sh ssh
service = ssh
port/type = 22/tcp
Description =   # SSH Remote Login Protocol

service = ssh
port/type = 22/udp
Description =  

flopc sh # ./services_parser.sh 21 
service = ftp
port/type = 21/tcp
Description =   # File Transfer [Control]

service = ftp
port/type = 21/udp
Description =   fsp fspd

Il est bien sûr évident que ceci ne constitue qu'une infime partie de la puissance d'awk qui est à lui seul un véritable langage de développement. En espérant que ce petit aperçu vous aura donné envie d'approfondir la connaissance de ce merveilleux outil.

liens connexes:

http://www.linux-pour-lesnuls.com/gawk.php
http://www.waterproof.fr/products/PHPEdit/manual/fr/module.FindRegExp.html
http://www.wagoneers.com/UNIX/AWK/awk.html
http://www.info.univ-angers.fr/aides/tutawk.html

mercredi, 29 juillet 2009

[ OpenOffice ] Supprimer le verrou sur un fichier

Présentation

Voila que j'arrive tranquillement pour ouvrir mon document odt pour y ajouter du contenu et OpenOffice me dit que mon fichier est déjà utilisé par un utilisateur : moi.après quelques recherches; il suffit simplement de supprimer le fichier correspondant au lock posé sur le fichier et remnté par OpenOffice.

Exemple :

florent@flopc ~ $ ls -la /media/disk/
-rwxr-xr-x  1 florent root    88 Jul 26 18:47 .~lock.test.odt#
-rwxr-xr-x  1 florent root 48627 Jul 29 05:16 test.odt

ce fichier contient les informations relative à la personne ayant ouvert le document comme vous pouvez le voir

florent@flopc ~ $ cat /media/disk/~lock.test.odt#
,florent,localhost,29.07.2009 05:37,file:///home/florent/.ooo3;
florent@flopc ~ $

il suffit donc simplement de supprimer le fichier lock et le tour est joué !

florent@flopc ~ $ rm -f /media/disk/~lock.test.odt#

Et voila vous pouvez à nouveau ouvrir votre document en écriture !

jeudi, 2 juillet 2009

[Webmin] Redefinir le mot de passe d'authentification

après avoir redéfini le mot de passe root de la machine je ne parvenais plus à m'authentifier sur l'interface Webmin. Voici la méthode que j'ai utilisé.

florent@flopc ~ $ cat /etc/shadow | grep root | cut -d':' -f-2 > /etc/webmin/miniserv.users

ceci permet de récupérer le mot de passe root chiffré et de l''utiliser dans l'interface webmin. il est bien sur possible d'utiliser un compte de notre choix disposant de droits différents.

Il est normalement possible d'utiliser un script fourni par webmin et permettant de mettre à jour le mot de passe mais ce dernier n'a pas fonctionné pour ma part.

florent@flopc ~ $ /usr/libexec/webmin/passwd/change-passwd.pl

le script prend en paramètre le nom du compte utilisateur à redéfinir et vous demande de renseigner le nouveau mot de passe.

jeudi, 18 juin 2009

[Communicator 2005] Archiver les conversations

Voici quelques temps que je cherche à conserver une trace de mes conversations sur Communicator 2005. Il s'avère que cette action est impossible par défaut. Je suis donc parti en quête d'un éventuel add-in me permettant de réaliser cela.

Et voilà que le miracle est arrivé. Je suis donc tombé sur ce petit utilitaire qui permet de d'archiver les conversations LCSMessengerHistory. Une fois cette dernière installée vos conversations sont automatiquement enregistrées dans le répertoire Mes Documents\Communicator Saved Conversations
A présent; à la fermeture de chacune des fenêtre de conversation le contenu sera archivé dans le répertoire. Au regard du fichier README il est possible de configurer le chemin de destination.

Liens connexes:

jeudi, 23 avril 2009

[Oracle] Verfier etat d'un listener

vérifier état d'un listener sur un serveur.

(server) [root] /home/root > ps -ef | grep pmon
  ora102  880834       1   0 03:18:05      -  0:06 ora_pmon_LDREF01
  ora102 1712218       1   0 03:17:45      -  0:06 ora_pmon_LDREP01
    root 1732796  806948   0 14:12:37  pts/4  0:00 grep pmon
(server) [root] /home/root > su - ora102
============================================
= You are connected WITH a [LOCAL] account =
============================================
(server) [ora102] /home/ora102 > lsnrctl
 
LSNRCTL FOR IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production ON 23-APR-2009 14:14:47
 
Copyright (c) 1991, 2007, Oracle.  ALL rights reserved.
 
Welcome TO LSNRCTL, type "help" FOR information.
 
LSNRCTL> STATUS LDR01
Connecting TO (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LDR01)))
STATUS of the LISTENER
------------------------
Alias                     LDR01
Version                   TNSLSNR FOR IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Production
Start Date                16-NOV-2008 08:24:08
Uptime                    158 days 5 hr. 51 min. 1 sec
Trace Level               off
Security                  ON: LOCAL OS Authentication
SNMP                      ON
Listener Parameter File   /appl/oracle/product/10.2.0/network/admin/listener.ora
Listener Log File         /appl/oracle/product/10.2.0/network/log/ldr01.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LDR01)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=server)(PORT=1549)))
Services Summary...
Service "LDR01" has 1 instance(s).
  Instance "LDR01", STATUS READY, has 1 handler(s) FOR this service...
Service "LDR01_XPT" has 1 instance(s).
  Instance "LDR01", STATUS READY, has 1 handler(s) FOR this service...
The command completed successfully
LSNRCTL>

bien vérifier la présence de l'entrée dans le fichier local D:\oracle\product\10.2.0\client_2\network\admin\tnsnames.

LDR01.WORLD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server.mondomaine.com)(PORT = 1548))
    )
    (CONNECT_DATA =
      (SID = LDR01)
      (SRVR = DEDICATED)
    )
  )

vendredi, 27 mars 2009

Pidgin : Plugin encrypt

Pour continuer dans la lancée un autre plugin pour pidgin cette fois ci fort utile. pidgin-encrypt permet en effet d'utiliser des clés de chiffrement lors de vos conversation et ainsi crypter tout les échanges entre vous et vos interlocuteurs.

Il est à noter que votre interlocuter doit lui aussi posseder pidgin et son plugin pidgin-encrypt. Je n'ai pour le moment trouvé aucun utilitaire permettant une portabilité totale (OS et client IM). Sous windows SimpLite offre pour ça part la prise en charge de différents clients. SimpLight va ensuite encapsuler votre trafic Instant Messenger dans un tunnel chiffré entre les SimpLite des interlocuteurs.

Liens connexes:

vendredi, 13 mars 2009

Pidgin : Plugin facebook

Juste une petite brève pour vous présenter une option à la con de pidgin :-)

Il existe en effet un paquet permettant d'ajouter simplement votre compte Facebook à la liste des comptes gérés par votre client.

Pour ma part; j'ai du installer le paquet x11-plugins/pidgin-facebookchat.

étant encore en version instable j'ai dû activer la branche instable pour ce dépôt

flopc ~ # echo "x11-plugins/pidgin-facebookchat ~x86" >> /etc/portage/package.keywords

Ne reste à présent plus qu'à installer le paquet

flopc ~ # emerge pidgin-facebookchat

Relancez votre client s'il était lancé.

Ajoutez maintenant votre compte Facebook en sélectionnant Facebook dans la section protocole

Liens connexes:

Ajaxterm : coller depuis le presse papier

Lorsque je suis en cours; et parce que je n'ai pour le moment pas trouvé d'autre moyen de bypasser le pare feu de l'école; j'utilise Ajaxterm pour acceder à mon serveur et l'administrer. Le problème est qu'il m'était jusqu'alors impossible de copier/coller du texte dans le terminal.

Vous pouvez observer qu'un lien apparait vous indiquant que l'accès est refusé

Il suffit simplement d'insérer les variables suivantes dans votre fichier user.js.

user_pref("capability.policy.policynames", "allowclipboard");
user_pref("capability.policy.allowclipboard.sites", "https://home.tools-fm.com/ajaxterm/");
user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");

utilisant pour ma part firefox dans sa version portable j'ai trouvé le fichier dans /Firefox/Data/profile/user.js.

samedi, 7 mars 2009

sauvegarder une base Mysql

Les quelques blogs que j'héberge fonctionnent souvent de paire avec une base de donnée de type Mysql ou Postgre. Ayant déjà fais la mauvaise expérience de perdre l'intégralité d'une base de donnée; j'ai décidé de réaliser une sauvegarde de la base mysql de mon blog et les sauvegarder sur une machine appartenant à mon réseau domestique.

Le principe

Pour sauvegarder une base; il est important de figer l'état de celle ci afin de conserver l'intégrité des données. Pour cela on pose un lock sur une base, le temps de la copie des données. Les requêtes en queue seront mise en attente ainsi que toutes les nouvelles requêtes entrantes. Ce n'est qu'une fois le lock sur la base levé; les requêtes en attente seront ensuite traitées selon le principe FIFO.

Le temps du lock il ne reste plus qu'à copier les fichiers relatifs à la base de donnée en utilisant une méthode de votre choix.

Méthode utilisée

Pour réaliser cette tache; nous utiliserons un script perl fourni par les packages Mysql; j'ai nommé mysqlhotcopy. Ce script offre le grand avantage de poser lui mêmes les locks nécessaires sur la base avant de réaliser le dump de la base. Il lèvera lui même les locks une fois l'action effectuée. Il permet également la sauvegarde sur une machine distante via le protocole ssh. Il existe bien évidement d'autres méthodes pour réaliser un dump de la base Mysql comme l'utilisation de snapshots LVM ou encore un système de réplication entre deamon MySql; Nous aborderons la réplication dans un article à venir.

Procédure

Bon voici donc les commandes nécessaires afin de réaliser le dump

Sauvegarde

La sauvegarde de la base dans son intégralité enregistré dans un fichier DBblog.sql

server@tosave# mysqldump --user=blog -p --flush-logs --single-transaction blog > DBblog.sql

Restauration

on copie ensuite le fichier sql DBblog.sql sur le serveur local puis via la commande suivante; on insère les données dans la base locale.

server@local# mysql --user=blog -p --database=blog < /var/lib/mysql/DBblog.sql

Voila notre base est a présent sauvegardée.

Liens connexes:

http://www.cryer.co.uk/brian/mysql/howto_backup.htm

vendredi, 6 mars 2009

Utiliser la RAM pour stocker vos fichiers d'échange.

Présentation

L'objectif ici est d'optimiser les temps d'accès aux données pour les fichiers temporaires en utilisant la RAM pour stocker ces fichiers. Nous allons donc allouer une partie de la RAM présente sur notre machine, un système de fichiers permettant cela: tmpfs.

Lire la suite...

jeudi, 19 février 2009

[ Tips ] find

Aujourd'hui je reçois une alerte d'un file system plein sur un des serveurs que nous supervisons.
Après un rapide coup d'œil; / est effectivement plein à 100%. je m'empresse donc de me rendre sur le serveur et trouver les vilains fichiers qui prennent tant de place.

flopc ~ # find /  -mtime -1 -ls 

Mais voila; ma commande censé me retourner la liste des fichiers modifiés dans / ces dernières 24heures me retourne également des fichiers logiquement sur / mais physiquement sur d'autres filesystem.

En effet; le système est réparti sur plusieurs partitions physique et supprimer des fichiers présents dans /etc ne vont par exemple aucunement alléger la partition / Il existe cependant un moyen d'indiquer à find de ne pas traverser les filesystem

flopc ~ # find / -xdev -mtime -1 -ls

voici aussi une syntaxe mélangeant regex et options d'excution.

flopc ~ # find /media/photos -type f -regex '.*\(avi\|mov\)' -exec vlc {} \;

Et juste histoire d'introduire notre ami xargs voici comment régler le problème de gestion des espaces souvent rencontrés avec ce dernier.

flopc ~ # find /media/photos -type f -regex '.*\(avi\|mov\)' -print0 |  xargs -0 -i{} vlc {}

liens connexes

http://www.wagoneers.com/UNIX/FIND/find-usage.html

dimanche, 1 février 2009

Une connexion à distance SSH ?

"Dis Flo, je voudrais me connecter à distance sur mes VM, j'ai bien réussi à installer un VPN via OpenVPN, mais pas toujours pratique, tu connaitrais pas un moyen pour le faire ? Quoi ? SSH ? Oula qu'est-ce que c'est donc ! Et sur du Linux ?! Mince alors... va falloir que j'installe une VM Linux alors ! Bon bah c'est partit !"

Lire la suite...

dimanche, 25 janvier 2009

Vim correction orthographique

Afin d'activer la correction syntaxique de votre langue dans vim, il vous suffit d'installer le paquet relatif à votre langue ( vim-spell-fr pour ma part). Ne reste plus qu'à activer le plugin dans votre éditeur en entrant la commande suivante une fois le lecteur ouvert.

:setlocal spell spelllang=fr

dimanche, 18 janvier 2009

RAID logiciel : mdadm

En ce moment j'ai pour projet de mettre en œuvre une baie de disque offrant des services de haute disponibilité et de tolérance de panne avec notamment la mise en œuvre d'un RAID logiciel ( RAID5 au final ) ainsi qu'un bonding d'interfaces pour accroître les débits réseaux.

Lire la suite...

samedi, 10 janvier 2009

exploitez votre RAM et accelerez le fonctionement d'application gourmandes

Mon EeePC est vraiment sympa; sauf qu'à l'usage certaines opérations sont extrêmement longues à être traitées. Globalement l'ouverture d'une application entraîne des accès disques que mes petits SSD semblent avoir du mal à encaisser et ce, malgré avoir joué avec mes variables d'environnement pour les déplacer dans sur un disque différent de l'applicatif en lui même.

Lire la suite...

- page 2 de 5 -