Catégories
Systeme

Tutoriaux parfaits (enfin perfects)

Depuis quelques moi je suis un fidéle lecteur du site HowToForge.

HowtoForge

Ce site regroupe des tutoriaux sur des sujets du monde libre (Linux, Apache, DNS …) et notamment une série nommée « The perfect desktop ». Celle-ci a pour but l’installation de bout en bout (« from scratch ») d’un système Linux sur une machine.

Voici la liste des distributions disponibles:

A lire, à utiliser et à enrichir.

Que j’aime ce monde libre 😉

Catégories
Systeme

Remplacer une portion de texte dans une liste de fichiers

Je viens de remettre la main sous une commande bien utile pour remplacer une portion de texte par une autre dans une arborescence de fichiers.

Il faut avoir Perl installé sur votre machine.

La commande est alors la suivante:

# find ./ -type f | xargs perl -pi -w -e 's/titi/tata/g'

Cette commande va remplacer dans l’ensemble des fichiers de l’arborescence courante et ses sous-répertoires, le mot ‘titi’ par ‘tata’.

Catégories
Systeme

Comparatif Linux versus Mac OS X

Depuis la sortie de Windows Vista, de nombreux sites/blogs ont publiés des comparatifs entre le dernier OS de Bill et Mac OS X. Je viens pour ma part me pencher vers la comparaison de deux OS qui ont les mêmes racines Unix: Linux (distribution Fedora Core 6) et Mac OS X (version Tiger 10.4).Linux vs Mac

Installation

Véritable talon d’Achille des systèmes Linux jusqu’à l’apparition des logiciels d’aide à l’installation (comme Anaconda pour Fedora), l’installation d’un système Linux sur un PC est maintenant à la portée de n’importe quel utilisateur.

C’est également le cas de l’installation de Mac OS X qui est simplifié à l’extrême. Par exemple pour l’installation de l’OS Tiger sur un MacBook Pro, seulement deux questions sont posées (nom de la machine et nom de l’utilisateur).

Notes pour l’installation de l’OS: Linux: 4/5 – Mac OS X: 5/5

Prise en main

La prise en main d’un nouvel OS dépend bien entendu de plusieurs paramètres comme par exemple vos compétences, vos habitudes et vos attentes. Pour un utilisateur habitué à manipuler des outils informatiques, ces deux OS ne pose pas de gros problèmes de prise en main. Il est cependant vrai que le changement par rapport à un OS de type Windows est palpable. Après plusieurs mois d’utilisation intensive de Linux et de Mac OS X, je trouve que les deux OS se valent. Sous Linux il faut cependant un bon moment et un nombre important de configuration avant d’arriver à une ergonomie qui peut concurrencer celle offerte par Mac.

Notes pour la prise en main de l’OS: Linux: 3/5 – Mac OS X: 4/5

Installation et mise à jour des logiciels

Un OS sans logiciels c’est comme une voiture sans essence. Il est donc important de disposer d’un gestionnaire de logiciel permettant de maintenir sont environnement à jour.

L’installation de logiciel est élémentaire sous Mac OS X (une fois que l’on a compris qu’il faut déplacer les logos dans le répertoire Applications lors de l’installation ;)). Sous Linux, elle peut se faire via une interface graphique ou par ligne de commande. Toutes les dépendances sont installées automatiquement.

Nous allons distinguer la mise à jour du système (noyau, « patch » sécurité, drivers…) de celle des logiciels.

Pour la mise à jour du système les deux OS disposent de fonctions équivalente. Quand une mise à jour est disponible, l’utilisateur est prévenu par une fenêtre. Une fois la mise à jour effectué, il doit la plupart du temps redémarrer son ordinateur pour que celle-ci soit prise en compte.

Pour la mise à jour des logiciels, Linux prend l’avantage, notamment grâce à l’utilisation de gestionnaires comme yum (sur Fedora) ou apt-get (sur Debian). Ils permettent en une seule commande (yum -y update) de mettre à jour tous les logiciels installés ainsi que toutes les librairies dépendantes. Un lancement régulier de ces commandes permet de s’assurer d’un système completement à jour.

Sous Mac, il n’y a pas de centralisation de l’information, il faut donc effectuer la mise à jour logiciel par logiciel.

Notes pour l’installation/mise à jour de logiciels: Linux: 4/5 – Mac OS X: 2/5

Interface graphique

C’est le point fort d’Apple. La marque à la pomme à toujours une génération d’avance sur la concurrence (on dit par exemple que l’interface de Leopard, alias Mac OS X 10.5, est une sorte de Windows Vista 2.0 en ce qui concerne l’interface graphique). C’est beau, fluide, les fonctions tombent sous la main, bref un sans faute, vu la puissance actuelle des ordinateurs.

Pour Linux je suis un peu plus contrasté. Effectivement, des progrets énormes ont été accomplies ces dernières années. Avec un PC de dernière génération, quelques heures (jours ?) de configuration aux petits oignons de Beryl, on arrive à un résultat vraiment sympa mais au détriment de l’ergonomie générale du système. Personnellement, j’ai dés-installé Beryl après deux semaines d’utilisations. L’interface par défaut (Gnome ou KDE que je ne connais pas) apporte déjà un bon confort d’utilisation.

Notes pour l’interface graphique: Linux: 3/5 – Mac OS X: 5/5

Logiciels « open-source » disponibles

Linux est le terrain de jeu des développeurs libres (« open-source »). On peut installer sur cet OS un nombre incalculable de logiciels en tout genre. S’il n’existe pas un package pre-compilé pour votre distribution (RPM sous Fedora), vous n’aurez qu’à récupérer les sources et à les compiler.

Sous Mac OS X et contrairement aux dernières générations de Mac OS, le fait de se baser sous un noyau Unix (BSD) permet de pouvoir installer un grand nombre de logiciels libres. Il existe aussi de plus en plus de développeur qui prennent en compte cet OS (voir par exemple le site: http://mac.softpedia.com/).

Notes pour l’interface graphique: Linux: 5/5 – Mac OS X: 3/5

Quel OS pour quel utilisateur ?

Voici mon avis personnel sur l’OS le plus adapté, en fonction des besoins des utilisateurs:
Bureautique: Mac OS X
Developpement: Linux
Expertise/administration réseau: Linux
Traitement image, video: Mac OS X
Web, Mail, Blog: Linux / Mac OS X

Vos avis/expériences m’intéressent, à vos claviers.

Catégories
Reseau

Monter un répertoire distant en SSH

Je me sers exlusivement du protocole SSH pour administrer mes machines via une console. Ce protocole permet également d’effectuer des transferts de fichiers via le protocole SCP. Cependant, il était jusqu’a maintenant nécessaire d’utiliser un client (scp sous Linux/BSD, WinSCP sur Windows ou Fugu sur Mac). Cette contrainte n’est plus d’actualité depuis l’apparition de Fuse.

« Pour rappel, Fuse (pour Filesystem in Userspace) permet à un utilisateur (non root) de créer son propre système de fichier sans avoir à modifier le noyau du systeme. Il existe par exemple une extension pour accéder à votre compte Gmail comme si celui-ci était un répertoire de votre disque dur (GmailFS). Fuse a de plus le bon goût d’être développé sous licence open-source GPL et LGPL. »

Pour notre besoin, nous allons utiliser le module SSHFS (SSH sur Fuse).

Installation (sur Fedora)

# yum install fuse-sshfs

Utilisation (sur Linux)

La première chose à faire est de créer, sur votre machine cliente, le répertoire dans lequel sera monté le répertoire distant:

# mkdir /mnt/test

Ensuite, on monte le répertoire distant /home/test qui se trouve sur la machine 192.168.0.2:

# sshfs 192.168.0.2:/home/test/ /mnt/test/

On vérifie en faisant un ls dans le répertorie /mnt/test. Il doit afficher le contenu du répertoire distant.

# ls /mnt/test
test.zip

Pour démonter le répertoire distant, il faut taper la commande suivante:

# fusermount -u /mnt/test

Et voila le travail…

Catégories
Reseau

Creation d’un plugins pour Nagios

Nous allons dans ce post écrire un plugins (très simple) pour Nagios. Le corps de ce plugins pourra vous servir de base pour réaliser des plugins plus complexes.

Suite à un post sur l’installation de Nagios, je me suis penché sur l’écriture d’un plugins permettant de vérifier qu’un processus est bien lancé sur un serveur distant.

Voici ce que je l’on attend de notre plugins:

  • Ouvrir une session SSH vers le serveur distant
  • Lancement d’un script vérifiant si un processus (testd) est lancé
  • Renvoie de l’état du processus (OK / ERROR / WARNING)
    • OK: Le processus (testd) est lancé et fonctionne correctement
    • ERROR: Le processus n’est pas lancé
    • WARNING: Le processus est lancé mais ne fonctionne pas correctement

Avant d’entrer dans le vif du sujet, il faut savoir que les plugins Nagios sont de simple « scripts shell » retournant un code de status. Ces plugins sont localisés dans le répertoire /usr/lib/nagios/plugins (sous Linux). Un petit coups de ls donne la liste des plugins installés par défaut:

# ls
check_http check_pgsql check_smtp check_udp2 check_imap check_mysql check_ping check_spop check_udrelay term_power check_clamd check_jabber check_mysql_query check_pop check_ssmtp check_dns check_ldap check_nntp check_scheduler check_tcp check_ftp check_ldaps check_nntps check_simap check_udp …

Nous allons donc dans un premier temps créer le plugins qui va lancer la commande sur le serveur distant:

# vi check_testd
#!/bin/sh

##################################################################
# Creation: Nicolargo
# Last Modification:
# This script checks testd daemon is running on a server
##################################################################

ssh nagios@$1 /usr/local/bin/nagios_testd.pl

Une fois l’automatisation du SSH effectuée entre votre serveur Nagios et votre serveur distant (il ne faut pas que le script demande le password…). Il reste à créer le script nagios_testd.pl (je l’ai developpé en perl mais rien n’empêche de le faire en SH) dans le réperoire /usr/local/bin du serveur distant.

# vi /usr/local/bin/nagios_testd.pl
#!/bin/sh

##################################################################
# Creation: NicoLargo
# Last Modification:
# This script is polling if testd daemon is running
##################################################################

STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4

ps auxw | grep [t]estd | grep -v nagios > /dev/null
STATE=$?
if [ « $STATE » = « $STATE_OK » ]
then
echo « TESTD OK »
exit 0
else
echo « TESTD Failed »
exit $STATE_CRITICAL
fi

Pour tester votre plugins, rien de plus simple, il suffit de lancer la ligne de commande sur votre serveur Nagios:

# /usr/lib/nagios/plugins/check_testd.sh monserveurdistant.mondomaine.com
TESTD OK

Si cela ne fonctionne pas, il faut d’abord vérifier que les fichiers ont les bons droits (lecture et execution) et que le SSH fonctionne correctement entre les deux machines.

Une fois le plugins validé, il ne reste plus qu’a l’intégrer dans vos fichiers de configuration.

# vi /etc/nagios/checkcommands.cfg

# ‘check_testd’ command definition
define command{
command_name check_testd
command_line $USER1$/check_testd $HOSTADDRESS$
}

et enfin:

# vi /etc/nagios/services.cfg

define service{
use generic-service
host_name monserveurdistant.mondomaine.com
service_description TESTD
check_command check_testd
}

Voili a+

Catégories
Systeme

Fedora Core 7 passe en TEST 2

Update: Fedora Core 7 est sortie

Catégories
Developpement

Création de package GNU

L’installation de packages GNU est toujours la même:

# ./configure
# make
# make install

Nous allons dans ce post étudier comment créer un package GNU respectant ce processus d’installation. Nous allons pour cela nous servir des utilitaires autoconf et automake.

Dans notre exemple, nous allons faire un package du plus célébre des programmes: helloword !
Ce programme se compose des fichiers suivants: helloword.c et helloword.h (je ne vous ferais pas l’affront de vous en donner le code source…).

La première chose à faire est d’organiser votre arborescence:

./helloword/
./helloword/AUTHORS
./helloword/README
./helloword/ChangeLog
./helloword/NEWS
/helloword/src/helloword.c
./helloword/src/helloword.h

Les fichiers AUTHORS, README, ChangeLog et NEWS sont standards et contiennent:

  • AUTHORS: Les informations sur l’auteur du package.
  • README : Description du package.
  • ChangeLog: Historique des changements (version par version).
  • NEWS: Nouveautés de la dernière version.

Nous allons maintenant configurer le fichier configure.in (à la racine de votre arborescence) qui servira de squelette à l’utilitaire autoconf (vous pouvez aussi vous servir de l’utilitaire autoscan qui générera ce fichier automatiquement):

# vi ./configure.in
AC_INIT(configure.in)
AM_INIT_AUTOMAKE(helloword, 1.0)
AC_PROG_CC
AC_PROG_INSTALL
AC_OUTPUT([
Makefile
src/Makefile
])

La macro AC_PROG_CC permet de vérifier lors de l’installation que l’ordinateur cible à bien un compilateur C.
La macro AC_PROG_INSTALL permet de vérifier lors de l’installation que l’ordinateur cible à bien l’utilitaire d’installation de binaire.

On lance ensuite la commande aclocal/autoconf, qui va elle même générer de nouveaux fichiers dans votre arborescence:

# aclocal && autoconf

Il faut alors editer les fichiers ./Makefile.am et ./src/Makefile.am de la facon suivante:

# vi ./Makefile.am
SUBDIRS= src# vi ./src/Makefile.am
bin_PROGRAMS = helloword
helloword_SOURCES = helloword.h helloword.c
helloword_CPPFLAGS = « 
helloword_LDADD = « 

La ligne CPPFLAGS permet d’ajouter des arguments lors de la pre-compilation.
La ligne LDADD permet d’ajouter des arguments lors de l’édition de lien.

On génére alors le fichier ./configure avec la commande:

# automake -a -c

Pour tester votre tout nouveau tout beau package, il suffit de lancer les trois commandes magique:

# ./configure
# make
# make install

Et voila le travail, il ne vous reste plus qu’a publier votre beau logiciel sur un des nombreux sites hébergeant les softs open-source (par exemple http://www.sourceforge.net/).

Pour résumer voici un diagramme résumant le processus:

Catégories
Uncategorized

VLC en ligne de commande

Nous allons regarder d’un peu plus prés le logiciel VLC (VideoLAN Media Player) dans sa version 0.8.6a et notamment son utilisation en ligne de commande. Les exemples suivants sont effectuée sous MacOS X, mais ils doivent fonctionner sans problème sous Linux.

En premier lieu on créé un alias vers l’executable vlc:

# alias vlc=’/Applications/VLC.app/Contents/MacOS/VLC’

Ensuite on lance la commande suivante pour vérifier que tout va bien…

# vlc -h
-> Affichage de l’aide en ligne

Jouer une video sur son écran

C’est la fonction de base de VLC, on prend en entrée un fichier video et on lance la commande suivante:

# vlc Elephants_Dream_HD.avi
-> Joue le fichier Elephants_Dream_HD.avi

On pointe déjà l’avantage de VLC par rapport aux autres « Player ». En effet, pas besoin de télécharger des codecs tous les jours. En effet, VLC inclue un grand nombre de codecs et à chaque version la liste s’agrandie.

Quelques touches racourcies quand une vidéo est en train de jouer:
– Touche « Espace »: Pause ou Play (si on est en pause)
– Touches « A »: Change l’aspect ratio
– Touches « T »: Affiche le temps écoulé/total
– Touches « S »: Active ou desactive les sous-titres (si disponible)
– Touches « D »: Active ou desactive les desentracellements
– Touche « ALT-F or POMME-F »: Pour passer en full-screen
– Touches « C »: Change le rognage

Flux de sortie de VLC

Nous allons enter dans le coeur du sujet de ce post: Les flux de sortie de VLC.
En effet, nous pouvons faire beaucoup plus que jouer une video, pour cela nous allons utiliser l’option –sout de la ligne de commande de VLC. Celle-ci permet d’utiliser des modules comme:
standard: streaming sur le réseau ou encodage dans un nouveau fichier.
transcodage: permet de changer à la volée le débit de sortie, le codec audio et/ou vidéo. Attention, cette option est grourmande en CPU…
duplicate: permet de créer un nouveau flux de sortie (pouvant être traité de manière différente).
display: permet de jouer la vidéo sur l’écran.
rtp: streaming en RTP (compatible RTSP).
es: Séparation du flux (par exemple pour un traitement différent du son et de la vidéo).

En ligne de commande, un transcodage, suivi d’un streaming se traduit par:
# vlc fichiersource.avi –sout ‘#transcode{options}:standard{options}’

La liste des options est disponible ici.

Streaming HTTP

Dans ce premier exemple, nous allons streamer (diffuser sur un réseau) une vidéo entre deux PC en utilisant le protocole HTTP.

Attention, pour streamer en utilisant le protocole HTTP, il faut que le fichier source soit encapsuler en: ps, mpeg1, ogg, asf ou mpjep.

Il faut donc passer par une phase de transcodage avant de pouvoir le streamer. Nous allons donc le transcoder en ogg. Le mux ogg est compatible avec les codecs MEPG 1/2/4, MJPEG, WMV 1/2 et Theora pour la vidéo et vorbix, flac, speex, a52 et l’audio MPEG pour l’audio. Notre fichier source d’exemple étant encodé en DIVX, il faut donc passer par une phase de transcodage avant de pouvoir le streamer. La commande à lancer sur le serveur est:

# vlc -vvv Elephants_Dream.avi –sout \ ‘#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:standard{access=http,mux=ogg,dst=:8080}’

Comme vous pouvez le voir dans la ligne de commande nous avons également fixé la bande passante (800 Kbps pour la vidéo et 128 Kbps pour l’audio).

Cette commande permet donc de créer l’équivalent d’un « serveur web » écoutant les requêtes sous le port TCP/8080 (il faut changer l’adresse IP par celle de votre PC). Il ne reste plus qu’a lancer sur une machine distante (cliente) la commande suivante:

# vlc http://:8080

Streaming UDP Multicast

Pour un streaming multicast utilisant le protocole UDP (on doit dans ce cas la encapsuler en ts).

Sur le serveur:

# vlc -vvv Elephants_Dream.avi –sout ‘#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:standard{access=udp,mux=ts,dst=239.10.11.12}’

Sur le client:

# vlc udp://@239.10.11.12:1234

Les combinaisons sont donc très grandes… à vos claviers !

Catégories
Systeme

Mot du jour

Un post depuis un hôtel de Noordwijk, une petite ville côtière proche d’Amsterdam. Ce post ne sera mis en ligne que demain matin. En effet, même dans un hôtel 4 étoiles (petit avantage des déplacements professionnels…) l’accès Internet ne fait pas encore partie des services de base. Il faut en effet débourser environ 10 Euros à un opérateur pour avoir droit à une heure de surf (et encore avec une limite sur le volume des données). Comme quoi l’accès au réseau des réseaux à encore du chemin à faire…

M’enfin… le post en question concerne les messages qui s’affichent automatiquement au lancement d’un terminal.

PREMIER MESSAGE
login:
password:
DEUXIEME MESSAGE
prompt>

Avant d’entrée votre login/password, le contenu du fichier /etc/issue est affiché. Vous pouvez modifier ce fichier à votre guise.

# vi /etc/issue

Après authentification, c’est au tour du fichier /etc.motd (pour « mot du jour ») d’être affiché. Vous pouvez également le modifier.

# vi /etc/motd

Pour aller un peu plus loin je me suis demandé comment exécuter un script en lieu et place d’un texte statique.
Sous Linux il suffit de créer un shell script sous /etc/profile.d/motd.sh.
Par exemple pour afficher la version du kernel, il faut faire:

# vi /etc/profile.d/motd
#!/bin/sh
echo -n « Bienvenue « 
username
uname -a
# chmod +x /etc/profile.d/motd

et voili le travail, un beau script de login. A vous de travailler.

Tot ziens !

Catégories
Uncategorized

Eclipse avec PHP,Perl et C

Eclipse est devenu l’environnement de développement de référence pour les achitectures Java. Initialement créé par IBM, il a été offert à la communauté du libre (open source) qui l’a fait évolué vers un IDE multi language grâce à de nombreux plugins.
Dans ce post nous allons voir comment installer Eclipse (sous MacOS X, mais la procédure est la même sous Linux) avec les plugins suivant: C/C++, PHP et Perl.

La première chose à faire dest d’installer la derniere version d’Eclypse en se rendant sur le site Web à l’URL suivante: http://www.eclipse.org/downloads/
L’installation ne devrait pas poser de problème.
Ensuite, il faut lancer l’application, puis cliquer ensuite sur le menu Help / Software updates / Find and install.

Cliquer ensuite sur le bouton « New remote site » et saisir les informations suivantes:

Recommancer l’operation avec:

Selectionner ensuite les sites suivant, puis cliquer sur Finish:

Il faut alors selectionner les plugins C/C++, PHPEclipse et EPIC (Perl Eclipse) et finaliser l’installation.

Il ne reste plus qu’a importer vos projets existant ou bien de créer un nouveau projet pour profiter des nouvelles fonctions.

Bon codage !