Catégories
Developpement Open-source Planet-libre

Utilisation des CTags avec Sublime Text

capture_147CTags est un outil pour les développeurs permettant de construire un index des fonctions et classes utilisées. Cela permet donc à un éditeur de texte compatible avec CTags de ce déplacer rapidement et sans « parsing » inutile dans l’arborescence de votre projet. On peut ainsi, à l’aide d’une simple combinaison de touches, aller directement à la définition d’une fonction.

Nous allons dans ce billet voir comment installer et configurer CTags avec l’éditeur de texte Sublime Text 3 dans un environnement Debian/Ubuntu.

Note: la procédure est grosso modo la même pour d’autres éditeurs comme Vim , Emacs ou GEdit.

Installation de CTags

CTags est disponible dans les dépôts de toutes les distributions. Sous Ubuntu, une simple ligne de commande:

sudo apt-get install ctags

devrait suffire pour installer une version stable de CTags.

Note: Pour installer CTags à partir des sources, toutes les informations se trouvent sur le site officiel.

Création de l’index pour votre projet

Il existe de nombreuses manières pour construire les fichiers index CTags. La plus simple est de se rendre dans le répertoire de votre projet (par exemple ~/dev/monprojet) puis de saisir la commande suivante:

cd ~/dev/monprojet
ctags -R -f .tags

On demande donc au logiciel ctags de générer le fichier index nommé .tags (option -f .tags) à effectuant un parsing récursif (option -R) de l’arborescence de votre projet.

Ce fichier doit être régénéré à chaque ajout de fonction ou de classe. Cela se fait par une combinaison de touche dans SublimeText mais peut aussi être automatisé par un hook après un commit Git.

Installation du plugin Ctags dans Sublime Text

Je pars sur le principe ou votre Sublime Text est installé avec le plugin Package Manager (si ce n’est pas le cas, suivre cette procédure).

Une fois Sublime Text lancé, on commence par appuyer sur la combinaison de touche SHIFT+CTRL+P puis de saisir le mot clé Install Package. La liste des plugins disponibles va se charger, on cherche ensuite le plugin CTags et on l’installe.

Utilisation de CTags dans Sublime Text

Au démarrage de Sublime Text dans le répertorie de votre projet (~/dev/monprojet) , le fichier index de Ctags (.tags)  va automatiquement être chargé. Il ne vous reste plus qu’à utiliser les combinaisons de touches suivantes pour naviguer dans les classes et fonctions de votre code source:

Commande Key Binding
Générer / Re-générer le fichier index Ctags CTRL+t, CTRL+r
Aller à la définition de la fonction/classe CTRL+t, CTRL+t
Revenir en arrière CRTL+t, CTRL+b
Affiche la liste des fonctions/classes (fichier en cours) ALT+s
Affiche la liste des fonctions/classes (tous les fichiers du projet) ALT+SHIFT+s

Conclusion

L’utilisation des CTags apporte un gain de productivité non négligeable lors du développement logiciel. Le fait d’avoir une base commune et ouverte (le fichier .tags étant à plat et au format texte) permet de passer d’un éditeur à un autre sans perte de fonctionnalité.

Utilisez-vous les Ctags ? Si oui comment.

Partagez cela avec nous !

Catégories
Hardware Open-source Planet-libre

Ma shortlist d’Ultrabooks sous GNU/Linux

dellxps

Je cherche à remplacer mon bon vieux PC laptop personnel qui commence un peu à dater (Fujitsu Lifebook S Series de 2009). L’utilisation que je fais de ce PC est assez varié: Surf sur le Web, blogging, développement, traitement d’image (photo)…

A partir de mon expérience sur le Fujitsu, les caractéristiques minimales sont les suivantes (par ordre décroissant d’importance):

  • composant compatible avec les distributions GNU/Linux (Ubuntu pour mon cas)
  • écran avec une résolution Full HD avec une diagonale minimale de 13″
  • 8 Go de RAM
  • disque dur système SSD car une fois que l’on y a goûté, il est impossible de revenir en arrière
  • processeur i5 ou supérieur
  • qu’il ne soit pas trop moche car il traîne souvent dans mon salon et pas trop lourd car je l’emporte avec moi en voyage et déplacement
  • un clavier AZERTY normal (donc ce qui met hors jeu des Apple MacBook Pro…)
  • un prix autour des 1200€

Comme vous pouvez le voir, ces caractéristiques collent parfaitement avec les laptop de type ultrabook.

J’ai donc commencé à chercher sur le net des informations sur les machines pouvant coller à mes besoins. De manière assez surprenante, la liste n’est pas si grande que cela. En effet, à l’heure actuelle (décembre 2013), beaucoup d’Ultrabooks ne proposent qu’une résolution « HD Ready »  (1366×778 pixels) ou d’une mémoire trop juste (4 Go).

Ainsi, ma shortlist  initiale se compose d’une dizaine de machines: CLIQUEZ ICI pour consulter ma liste sur Google Drive.

Voici, par ordre alphabétique, les ultrabooks qui sortent du lot par rapport à mes besoins/goûts.

Clevo W840SU 14″

Proposé par le site Anglais PCSpecialist, ce laptop n’est pas à proprement parler un ultrabook mais dispose d’une configuration paramétrable, d’un port Ethernet (oui madame !) et de composant de qualité. Il peut de plus être commandé sans OS Windows, d’ou un prix de vente assez concurrentiel (moins de 1200 € pour une configuration musclée).

Le seul problème pour moi est le design général qui n’est pas vraiment glamour.

cosmos

 

 

Dell XPS 13 Dev

La deuxième machine est beaucoup plus connue car elle avait fait le buzz au moment de sa commercialisation. Imaginer un ultrabook design, doté d’une configuration musclée pour les développeurs sous Ubuntu (au moins on est sûr de la compatibilité) !

Vous en avez rêvé ? Dell a essayé de le faire avec son XPS 13 Dev Edition.

Au niveau du look, rien à dire, c’est une belle machine que l’on a pas honte de sortir en public. Au chapitre des points négatifs: pas de port Ethernet et un prix qui grimpe à plus de 1300€ avec la livraison.

dellxps2

 

Lenovo Ideapad Yoga 2 Pro 59386559

Quoi ? Un IBM (enfin Lenovo) dans cette sélection ? Et oui, l’Ideapad Yoga 2 est une bien belle machine avec notamment une dalle HD avec une résolution de 3200×1800 pixels, un design très sympa (si on aime le orange) et une configuration qui tient la route pour 1200€.

Il est par contre très difficile de le trouver en France et la compatibilité avec Linux demande quelques manipulations.

lenovo

 

MOUNTAIN Portátil LightU T744G

Enfin, pour finir cette sélection, nous allons aller du coté de l’Espagne ou l’intégrateur Mountain propose des PC et laptops à configurer et compatible avec Ubuntu (il propose même d’installer nativement l’OS avant de vous l’expédier).

La configuration est bonne, le design plus sexy que le Clevo Anglais mais le prix grimpe à plus de 1300€.

capture_145

 

Conclusion

Je ne suis pas encore fixé sur mon choix final. Pour l’instant, le Montain, le Dell et le Lenovo tiennent la corde.

Avez-vous d’autres pistes ?

Catégories
Open-source Planet-libre Systeme

Il n’y a pas qu’Ubuntu dans la vie…

En mettant de côté le monde des serveurs et des smartphones, les systèmes GNU/Linux représentent plus ou moins 1 % des parts de marché sur les PC clients. Si ce chiffre peut paraître ridicule par rapport au nombre de machines sous Windows, il l’est encore plus quand on regarde les parts des systèmes GNU/Linux autres qu’Ubuntu.

Pourtant, en ne donnant pas une chance à ces distributions exotiques, vous pourriez passer à côté d’un système adapté à votre configuration. Le fond du problème est là. La cible de Canonical (l’éditeur d’Ubuntu) est la même que Microsoft : des PC costauds, avec des cartes graphiques supportant l’accélération 3D et une mémoire confortable pour faire tourner vos applications en même temps que l’environnement graphique système (Gnome3 ou KDE).

Hors, tout le monde n’a pas les moyens ou tout simplement l’envie de dépenser plus de 700€ pour avoir un PC bureautique performant. C’est pourtant sur ce créneau spécifique des PC « low cost » que ces distributions apportent toute leur valeur ajoutée. En effet, elle sont pour la plupart basée sur des interfaces graphiques moins consommatrice de ressources hardware. Je pense notamment à LXDE et XFCE porté par Canonical sur les distributions dérivées Lubuntu et Xubuntu mais aussi à OpenBox comme dans le très bon CrunchBang Linux que j’ai testé sur un boîtier « Linutop 4 » dans un dernier article. Le choix de l’interface graphique n’est pas le seul avantage de ces distributions. Elles sélectionnent également les applications proposées en standard aux utilisateurs, en préférant par exemple Midori ou Chromium à la place de Firefox.

Les plus barbus d’entre vous vont me retourner qu’il est tout à fait possible de prendre n’importe quelle distribution GNU/Linux (si possible la plus proche de la philosophie libre) et d’y installer à la main l’interface graphique et les applications de son choix. Cependant, cette démarche est justement réservée aux barbus et pas à Monsieur Lambda que l’on souhaite faire venir du bon côté de la force.

Alors que pouvons-nous faire ? Nous, défenseurs des logiciels libres. Pourquoi pas en donnant sa chance à une distribution alternative, en sortant un peu des pistes que l’on connait si bien (ne vous inquiétez pas, vous ne serez pas perdu bien longtemps). En choisissant tout simplement un système en adéquation avec nos besoins et le matériel associé. En ne refaisant pas les mêmes erreurs qui ont conduit et conduisent encore des utilisateurs vers des OS propriétaires et fermés.

Catégories
Open-source Planet-libre Reseau

Simuler un réseau WAN entre deux réseaux LAN

A partir de sa version 2.6, le noyau Linux dispose d’une fonction permettant de simuler certaines caractéristiques comme un délais de transit, une perte de paquets ou même un débit maximal sur une simple interface réseau locale. J’avais déjà parlé de ce sujet il y a quelques temps pour simuler une liaison WAN entre une machine et son réseau. Suite à une question d’un lecteur, voici un billet dans lequel nous allons mettre en place un simulateur de liaison WAN entre deux réseaux LAN. Cette infrastructure pourra être utile à toutes personnes devant valider sur table une architecture inter-site.

De quoi avons nous besoin ?

Pour bâtir cette infrastructure, nous avons besoins de deux réseaux LAN (mais deux PC peuvent suffirent) et d’une machine GNU/Linux disposant de deux interfaces réseaux permettant de faire un pont entre ces deux LAN. Le choix d’une architecture en pont (bridgé) permet d’insérer facilement le simulateur dans une architecture réseau existante.

 

Configuration du bridge

Personnellement, j’ai utilisé une distribution GNU/Linux Debian Squeeze pour mettre en place le simulateur. Mais toutes les distributions GNU/Linux avec une version de Kernel >= 2.6 peuvent faire l’affaire.

Après une installation standard du système d’exploitation Debian, il faut ajouter le paquet bridge-utils pour permettre à ce dernier de créer le pont entre les deux interfaces réseaux:

sudo aptitude install bridge-utils

Il faut ensuite éditer le fichier de configuration /etc/network/interfaces de la manière suivante:

auto lo

iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual

auto br0

iface br0 inet dhcp

bridge_ports eth0 eth1

Puis on fait prendre en compte cette configuration par le système:

sudo /etc/init.d/networking restart

Note: il faut attendre une trentaine de seconde lors de l’initialisation.

On vient donc de créer une nouvelle interface virtuelle (br0) qui fait un pont entre les deux interfaces physiques (eth0 et eth1).

Si vous connectez en l’état le simulateur entre vos deux LAN, tout le trafic transitera de manière transparente à la vitesse maximale de vos interfaces eth0 et eth1.

Configuration du simulateur

On passe maintenant à la partie intéressante de ce billet: comment simuler un lien WAN à partir de notre simulateur.

Vous allez voir que c’est relativement simple. Nous allons utiliser un script de configuration automatique qui va activer / désactiver le simulateur à la demande. Les caractéristiques du WAN à simuler seront codées en dur dans la section configuration du script. A vous de l’adapter à vos besoins.

Voici le script en question (également disponible sur mon GitHub):

#!/bin/bash
#
# simulwan-bridge.sh
# Nicolargo - 2012
#

##############################################################################

# Nom des interfaces ou l'on doit faire les simulations
# eth0 cote LAN local 
# eth1 cote LAN distant
IF=eth1

# Liaison sortante (UPLOAD) a appliquer sur IF
# Debit sortant
BWU=8mbit
# Délai de transit sortant
DELAYU=15ms
# % de paquets perdus sortant
LOSSU=0.0001%

# Liaison entrante (DOWNLOAD) a appliquer sur IF
# Debit entrant
BWD=1mbit
# Délai de transit entrant
DELAYD=15ms
# % de paquets perdus entrant
LOSSD=0.00001%

##############################################################################

start() {
    modprobe ifb
    ip link set dev ifb0 up

    tc qdisc add dev $IF ingress

    tc filter add dev $IF parent ffff: \
    protocol ip u32 match u32 0 0 flowid 1:1 \
    action mirred egress redirect dev ifb0

    # Liaison entrante
    tc qdisc add dev ifb0 root handle 1:0 \
    netem delay $DELAYD 10ms distribution normal \
    loss $LOSSD 25%

    tc qdisc add dev ifb0 parent 1:1 handle 10: \
    tbf rate $BWD buffer 3200 limit 6000

    # Liaison sortante
    tc qdisc add dev $IF root handle 2:0 \
    netem delay $DELAYU 10ms distribution normal \
    loss $LOSSU 25%

    tc qdisc add dev $IF parent 2:1 handle 10: \
    tbf rate $BWU buffer 3200 limit 6000
}

stop() {
    tc qdisc del dev ifb0 root
    tc qdisc del dev $IF root
    # ip link set dev ifb0 down
}

restart() {
    stop
    sleep 1
    start
}

show() {
    echo "Liaison entrante"
    tc -s qdisc ls dev ifb0
    echo "Liaison sortante"
    tc -s qdisc ls dev $IF
}

case "$1" in
    start)
        echo -n "Starting WAN simul: "
        start
        echo "done"
        ;;
    stop)
        echo -n "Stopping WAN simul: "
        stop
        echo "done"
        ;;
    restart)
        echo -n "Restarting WAN simul: "
        restart
        echo "done"
        ;;
    show)
        echo "WAN simul status for $IF:"
        show
        echo ""
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|show}"
        ;;
esac

exit 0

Par défaut, le script simule une liaison WAN de type ADSL (8 Mbps en download et 1 Mbps en upload avec un délais de transit de 30ms en aller/retour et un taux de perte de 10^-4).

Pour l’installer, il suffit de saisir les commandes suivantes:

sudo wget -O /etc/init.d/simulwan.sh https://raw.github.com/nicolargo/simulwan/master/simulwan-bridge.sh
sudo chmod a+x /etc/init.d/simulwan.sh

Pour lancer le simulateur WAN:

sudo /etc/init.d/simulwan.sh start

Pour arrêter le simulateur WAN:

sudo /etc/init.d/simulwan.sh stop

Pour avoir un état des interfaces:

sudo /etc/init.d/simulwan.sh show

Conclusion

Vous venez donc à moindre coût de mettre en place une architecture permettant de simuler des liaisons WAN. Le PC sur lequel se base votre simulateur n’a pas besoin d’être une bête de course et vous pouvez donc facilement récupérer du vieux matériel pour mettre en place ce système.

 

 

 

Catégories
Open-source Planet-libre Reseau Systeme

Installation et configuration de Munin, le maître des graphes

Munin est un logiciel de supervision permettant de centraliser la gestion des graphes de données RRDTools. Il permet en quelques commandes que nous allons détailler dans ce billet de générer des graphes complexes pour surveiller vous machines et les processus qui tournent dessus.

Voici un exemple de graphe sur les statistiques remontées par un serveur utilisant Varnish:

Introduction

Munin est proposé sous la forme de deux packages complémentaires: munin et munin-node.

Le premier (munin) est à installer sur votre serveur de supervision (appelé maître). Son objectif principal est de récupérer les données venant des machines à surveiller puis de générer des graphes qui seront présentés aux utilisateurs via une interface Web.

Le second  (munin-node) est à installer sur toutes les machines à superviser (appelées noeuds). Son objectif est de collecter les informations systèmes en utilisant des plugins (présent dans le package munin-node et dans munin-plugins-extra).

La communication entre le serveur maître et les machines noeuds utilise, par défaut le protocole TCP/4949 (initialisation de la connexion TCP de la part du serveur maître).

Installation de Munin

Pour la suite de ce billet (et sauf mention spécifique), je partirai sur le principe ou vous utilisez des machines sous Debian/Ubuntu.

Installation de Munin sur le serveur maître

Le serveur maître doit disposer d’un serveur Web (voir ce billet pour installer simplement NGinx sur votre système) configuré avec le répertoire root par défaut: /var/www.

Comme Munin est présent dans les dépôts officiels, il suffit de saisir la commande suivant qui va installer le package maître ainsi que le package esclave histoire de pouvoir superviser son serveur de supervision…:

sudo apt-get install munin munin-node munin-plugins-extra

sudo ln -s /var/cache/munin/www /var/www/munin

sudo /etc/init.d/munin-node restart

En faisant pointer un navigateur Web vers l’URL:

http://votreserveurdesupervision/munin

Vous devriez voir s’afficher les statistiques de votre serveur. Il faut attendre quelques minutes avant de voir les premiers graphes, le temps que les bases de données soient renseignées.

Installation de Munin sur les machines noeuds

Installation des noeuds sous GNU/Linux

Là encore c’est assez simple:

sudo apt-get install munin-node munin-plugins-extra

La configuration de Muni sur les machines noeuds est centralisée dans le fichier /etc/munin/munin-node.conf. Il faut éditer ce fichier pour y configurer l’adresse IP de votre serveur maître à la ligne suivante:

# A list of addresses that are allowed to connect. This must be a

# regular expression, since Net::Server does not understand CIDR-style

# network notation unless the perl module Net::CIDR is installed. You

# may repeat the allow line as many times as you'd like

allow ^192\.168\.1\.200$

Cette configuration (à adapter à votre besoin) va autoriser la machine maître d’adresse IP 192.168.1.200 à se connecter sur cette machine noeud pour y récupérer les données à superviser.

Il faut ensuite relancer le service Munin-node pour faire prendre en compte la nouvelle configuration:

sudo /etc/init.d/munin-node restart

Installation des noeuds sous Windows

Le projet Munin ne fourni pas de « node » pour WIndows, il faut donc se retourner du coté de la communauté pour trouver notre bonheur. En l’occurrence du coté du logiciel Munin-Node-Win32 disponible au téléchargement sur cette page.  Il suffit de lancer l’installer pour que l’installation et le lancement du processus en tache de fond soit effectué (procédure testé sous Windows 7).

Installation des noeuds sous MacOS

Si vous avez à surveiller des machines sous Mac OS X, il va falloir mettre un peu plus les mains dans le cambouis. En effet, il faut obligatoire passer par l’installation des gestionnaires de paquets Fink ou MacPorts. Je vous conseille la lecture du Wiki officiel.

Configuration des plugins sur les machines noeuds

Nous allons voir dans cette sections comment configurer ce que l’on souhaite superviser sur les machines noeuds. Munin utilise le fichier  /etc/munin/plugin-conf.d/munin-node (ainsi que tous les fichiers se trouvant dans le même répertoire) pour configurer les paramètres des plugins (bien souvent de simples script Perl).

Le répertoire /etc/munin/plugins/ contient la liste des plugins utilisables par la machine noeud et le répertoire /usr/share/munin/plugins/ l’ensemble des plugins. En y regardant de plus prêt, le répertoire  /etc/munin/plugins/ fait des liens symboliques vers le répertoire /usr/share/munin/plugins/.

Pour voir la liste des plugins disponibles sur le noeud, on peut utiliser:

# sudo munin-node-configure

Exemple de l’ajout des plugins NGinx (permettant de surveiller un serveur Web NGinx) sur un noeud:

Pour faire prendre en compte un nouveau plugin sur un noeud (node) il faut faire un lien symbolique entre le fichier en question dans ce répertoire et /etc/munin/plugins/. Par exemple pour accéder aux stats de mon serveur NGinx:

sudo ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status

sudo ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request

Il est quelquefois necessaire d’installer des dependances pour que le plugin fonctionne.

Pour voir les dépendances nécessaire il suffit de saisir la commande:

sudo munin-node-configure --suggest | grep nginx

nginx_request | yes | no [LWP::UserAgent not found]

nginx_status | yes | no [LWP::UserAgent not found]

Il faut donc installer la librairie perl contenant le module LWP qui est présente dans le package libwww-perl sur Debian/Ubuntu:

sudo apt-get install libwww-perl

Cela a l’air OK:

sudo munin-node-configure --suggest

nginx_request | yes | yes

nginx_status | yes | yes

On peut faire prendre en compte la configuration par Munin-node:

sudo /etc/init.d/munin-node restart

Configuration du maître pour prendre en compte les machines noeuds

Une fois toutes vos machines noeuds configurés (voir le chapitre précédant), il faut maintenant modifier la configuration du serveur maître pour les prendre en compte. Là encore, fidèle à la philosophie Unix, la configuration est centralisé dans le fichier /etc/munin/munin.conf.

En plus des répertoires systèmes en début de fichier:

# The next three variables specifies where the location of the RRD

# databases, the HTML output, logs and the lock/pid files. They all

# must be writable by the user running munin-cron. They are all

# defaulted to the values you see here.

#

dbdir /var/lib/munin

htmldir /var/cache/munin/www/

logdir /var/log/munin

rundir /var/run/munin

Il faut configurer la liste des noeuds de la manière suivante:

# A simple host tree for mondomaine.com

[maitre.mondomaine.com]

address 127.0.0.1

[noeud1.mondomaine.com]

address noeud1.mondomaine.com

[noeud2.mondomaine.com]

address noeud2.mondomaine

Reste à relancer le serveur Munin pour prendre en compte la configuration:

su - munin --shell=/bin/bash

/usr/share/munin/munin-update

exit

En faisant pointer un navigateur Web vers l’URL:

http://votreserveurdesupervision/munin

Puis par exemple les graphes sur l’occupation mémoire:

Pour voir une démonstration en ligne des capacités de Munin, vous pouvez consulter ce serveur maître qui est en accès libre.

Plus de plugins ?

Un des gros avantage de Munin est le fait de pouvoir simplement écrire de nouveaux plugins en utilisant votre langage favori (nous reviendrons bientôt sur ce sujet dans un prochain billet).  Pas mal d’exemples sont proposés  dans le dépôt GitHub suivant (vous devriez trouver votre bonheur).
Catégories
Open-source Planet-libre Systeme

Pense-bête: un deuxième disque dur pour votre GNU/Linux

Petit pense-bête à usage interne pour installer (= partitionner & formater) un deuxième disque dur au format ext4 sur une distribution GNU/Linux.

Notes: les commandes suivantes doivent être effectuées depuis un compte root.

Préparation

On commence par vérifier la liste des disques disponibles avec la commande:

[cc]
# fdisk -l
[/cc]

J’obtiens:

Disk /dev/sda: 17.2 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f7a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1998    16043008   83  Linux
/dev/sda2            1998        2089      731137    5  Extended
/dev/sda5            1998        2089      731136   82  Linux swap / Solaris

Disk /dev/sdb: 34.4 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

J’ai donc deux disques disponibles (je suis sur une VM donc ne vous étonnez pas des tailles):

  • /dev/sda: d’une taille de 17.2 GB avec 3 partitions (sda1, sda2, sda5)
  • /dev/sdb: d’une taille de 34.4 GB sans partition

C’est ce deuxième disque (sdb) que l’on souhaite installer

Partitionnement

On commence donc par partitionner le disque en question:

[cc]
# fdisk /dev/sdb
[/cc]

Notes: Faites bien attention à lancer la commande fdisk sur le bon disque…

une seule grosse partition qui utilisera la totalité de l’espace disque:

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x852ed7ac.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4177, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-4177, default 4177): 
Using default value 4177

Puis on demande à fdisk de lui affecter le type ‘Linux’

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 83

Puis on valide:

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

La partition que l’on vient de créer portera le nom sdb1.

Formatage en ext4

On utilise ensuite la commande mkfs.ext4 pour formater la partition au format EXT4

[cc]
# mkfs.ext4 -b 4096 /dev/sdb1
[/cc]

mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2097152 inodes, 8387930 blocks
419396 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
256 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Vérification

On vérifie que tout c’est bien passé:

[cc]
# fdisk -l
[/cc]

Disk /dev/sda: 17.2 GB, 17179869184 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000f7a3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1998    16043008   83  Linux
/dev/sda2            1998        2089      731137    5  Extended
/dev/sda5            1998        2089      731136   82  Linux swap / Solaris

Disk /dev/sdb: 34.4 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x852ed7ac

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        4177    33551721   83  Linux

Nous disposons donc bien d’une disque (/dev/sdb1) de 34.4 GB

Utilisation de la nouvelle partition

Pour utiliser ce nouveau disque, il faut le monter (« mount »).

On commence donc par créer un répertoire (/mnt/data) dans lequel le contenu du disque sera visible:

[cc]
# mkdir /mnt/data
[/cc]

Puis on édite le fichier /etc/fstab pour lui ajouter la ligne suivante:

/dev/sdb1             /mnt/data    ext4  defaults   1 1

On monte le disque:

[cc]
# mount /mnt/data
[/cc]

et on vérifie que le système le détecte:

[cc]
# df -k
[/cc]

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15791024   2446256  12542620  17% /
tmpfs                   513604         0    513604   0% /lib/init/rw
udev                    508732       116    508616   1% /dev
tmpfs                   513604         0    513604   0% /dev/shm
/dev/sdb1             33025240    180152  31167504   1% /mnt/data

Bingo, il ne reste plus qu’à écrire/lire vos données dans le répertoire /mnt/data !

Catégories
Open-source Planet-libre Systeme

Supervision simple en ligne de commande avec Saidar

Marre des interfaces graphiques qui ne sont là que pour faire plaisir à vos chefs ? Marre de passer vos journées dans les méandres des fichiers de configuration de Nagios ? Vous avez besoin d’un moyen simple et rapide pour voir ce qui cloche sur une machine ?

Si vous avez répondu oui aux questions précédentes ou que comme moi la première chose que vous faites en cas de problème sur une machine est de regarder la charge, la mémoire et l’espace disque disponible  alors Saidar est fait pour vous !

C’est quoi donc ?

Saidar est un logiciel libre (GPL v2), en ligne de commande permettant d’afficher sur dans une console l’état de votre machine. Il se base sur la librairie libstatgrab qui apporte une couche d’abstraction pour la récupération des informations sur les systèmes d’exploitations Solaris 2.x, Linux 2.2/2.4/2.6, FreeBSD 4.x/5.x, NetBSD 1.6.x, OpenBSD 3.x, DragonFly BSD 1.0, HP-UX, et Cygwin (donc Windows).

Cette librairie dispose également de binfing (interface) vers les langages suivants:

Comment cela marche ?

Sous Debian/Ubuntu, l’installation est facilité par la présence de Saidar dans les dépôts officiels:

[cc lang= »bash »]

# apt-get install saidar

[/cc]

Il suffit ensuite de lancer le logiciel depuis une console (/ terminal):

[cc lang= »bash »]

# saidar

[/cc]

Pour voir afficher les merveilleuses statistiques:

Personnellement j’ai ajouté un raccourci à mon fichier .bashrc pour activer certaines options (couleur et rafraîchissement toute les secondes):

[cc lang= »bash »]

alias saidar=’saidar -c -d 1′

[/cc]

Et voilà le résultat:

Si un chiffre apparaît en gras, c’est que la valeur dépasse les 60%. Au dessus de 90% il est affiché en avec un fond de couleur.

Bref, un outil bien sympathique dans l’esprit GNU à laisser tourner sur vos machines critiques !

Catégories
Open-source Planet-libre Systeme

Script de post installation de Mint 12 (aka Lisa)

L’utilisation par défaut de l’environnement Unity dans la dernière version d’Ubuntu (la 11.10) a beaucoup fait parler d’elle dans le petit monde des utilisateurs GNU/Linux. En effet, cette nouvelle interface demande à l’utilisateur une période d’adaptation pour retrouver ses marques. Personnellement, j’ai dans un premier temps renoncé à l’utiliser sur mon PC personnel mais pas pour cette raison. Comme j’utilise des distributions diverses et variées (Debian, Fedora, Ubuntu, BSD…), je souhaite avoir un environnement similaire entre tous ces systèmes. Comme Unity est seulement utilisée dans l’écosystème Ubuntu, je me suis penché sur Gnome 3 (Gnome Shell) et je l’ai donc installé puis configuré sur mon Laptop perso.

Aujourd’hui sort Mint 12 (« Lisa »), une distribution GNU/Linux basée sur Ubuntu (11.10) mais avec Gnome Shell comme environnement graphique par défaut. J’ai donc installé cette distribution sur une de mes machines et je dois avouer que j’ai été assez bluffé par le degré et la maturité d’intégration de Gnome Shell.

J’en ai également profité pour écrire un script de post installation qui permet de peaufiner le système en installant des logiciels manquants (voir la liste ici) et en améliorant encore un peu plus Gnome Shell (installation de thèmes et d’icônes supplémentaires).

Le script est disponible sur le repo GitHub (lien direct pour le téléchargement).

Pour exécuter le script sur une Mint fraichement (hahaha) installée:

[cc lang= »bash »]
mkdir ~/install
cd ~/install
wget https://raw.github.com/nicolargo/ubuntupostinstall/master/mint-12-postinstall.sh
chmod a+x mint-12-postinstall.sh
sudo ./mint-12-postinstall.sh
[/cc]

Voici le résultat:

Je suis bien sûr preneur de toutes les remarques sur le script. Vous pouvez également contribuer à son évolution en suivant ce tutoriel.

Avec quelques jours de recul, je pense le plus grand bien de cette distribution, elle apporte une cohérence et une continuité au niveau de l’interface graphique que l’on ne retrouve pas (ou plus) chez Ubuntu.

Avez-vous essayé Mint ? Qu’en pensez-vous ?

Catégories
Open-source Planet-libre Reseau

Installation d’un serveur de temps sur votre réseau

Dans un système d’information moderne, la synchronisation des machines sur une horloge commune est un pré-requis pour de nombreuses actions comme l’analyse des logs ou la supervision système et réseau. Si vos machines sont directement connectés à Internet alors il n’y a pas de problème car les distributions GNU/Linux, Windows et Mac OS X embarquent des mécanisme pour se mettre automatiquement à l’heure en se synchronisant sur des serveurs publics (par exemple 0.debian.pool.ntp.org sur une Debian Squeeze). Si ce n’est pas le cas et que vos machines sont isolées et/ou bien filtrées lors de leurs accès à Internet, il peut être intéressant d’installer un serveur de temps local sur une de vos machine.

Nous allons donc dans ce billet installer un serveur de temps NTP sur une machine sous Debian 6 (Squeeze).

Le protocole NTP

J’invoque le bon génie Wikipédia: « Le Protocole d’Heure Réseau (Network Time Protocol ou NTP) est un protocole qui permet de synchroniser, via un réseau informatique, l’horloge locale d’ordinateurs sur une référence d’heure. »

La référence en question sera donc, dans notre cas, la machine ou nous allons installer puis configurer notre serveur NTP.

Le protocole NTP utilise le port UDP/123 pour effectuer les requêtes sur le réseau. Notre serveur sera donc en écoute sur le port UDP 123 (si vous avez un Firewall, il faudra bien entendu le configurer pour autoriser les requêtes sur ce port).

Installation du serveur NTP

On commence par installer les paquets nécessaires dans une console root:

[cc lang= »bash »]

apt-get install ntp ntpdate

[/cc]

La première chose à faire est de mettre le serveur à la bonne heure (quitte à avoir une référence, autant qu’elle soit juste…).

Pour cela deux solutions:

  • si votre machine à accès à Internet, utiliser la commande « ntpdate-debian » qui va synchroniser votre machine sur les serveur NTP Debian.
  • si votre machine n’a pas accès à Internet, alors téléphoner à l’horloge parlante (numéro payant: 3699) puis configurer l’heure système avec la commande « date ». Par exemple « date -s 16:56:23 ».

On édite ensuite le fichier /etc/ntp.conf:

[cc lang= »bash »]

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift

# Enable this if you want statistics to be logged.

#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

# You do need to talk to an NTP server or two (or three).

#server ntp.your-provider.example

# http://www.pool.ntp.org/zone/fr

server 0.fr.pool.ntp.org

server 1.fr.pool.ntp.org

server 2.fr.pool.ntp.org

server 3.fr.pool.ntp.org

# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will

# pick a different set every time it starts up. Please consider joining the

# pool: <http://www.pool.ntp.org/join.html>

# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for

# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>

# might also be helpful.

#

# Note that « restrict » applies to both servers and clients, so a configuration

# that might be intended to block requests from certain clients could also end

# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don’t allow configuration.

restrict -4 default kod notrap nomodify nopeer noquery

restrict -6 default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.

restrict 127.0.0.1

restrict ::1

# Clients from this (example!) subnet have unlimited access, but only if

# cryptographically authenticated.

#restrict 192.168.123.0 mask 255.255.255.0 notrust

# My server is a public server

restrict 0.0.0.0 mask 0.0.0.0

# If you want to provide time to your local subnet, change the next line.

# (Again, the address is an example only.)

broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet, de-comment the

# next lines. Please do this only if you trust everybody on the network!

#disable auth

#broadcastclient

[/cc]

Les informations intéressantes sont les suivantes:

server 0.fr.pool.ntp.org

server 1.fr.pool.ntp.org

server 2.fr.pool.ntp.org

server 3.fr.pool.ntp.org

Permet de configurer les serveurs maîtres sur lesquels votre machine va essayer de se synchroniser pour rester à l’heure. Il faut bien sûr que votre machine est accès à Internet sur le port UDP/123.

restrict 0.0.0.0 mask 0.0.0.0

On rends notre serveur public, toutes les machines ayant un accès réseau (encore une fois sur le port UDP/123) pourront se synchroniser à partir de votre serveur. Il est bien sûr possible de limiter ce droit aux seules machines de vos réseaux.

broadcast 192.168.0.255

(optionnel) Diffuse le temps sur l’adresse de broadcast de votre réseau (par exemple 192.168.0.0/24).

On relance ensuite le serveur pour que la configuration soit prise en compte:

[cc lang= »bash »]

# /etc/init.d/ntp restart

Stopping NTP server: ntpd.

Starting NTP server: ntpd.

[/cc]

Synchroniser vos machines avec votre serveur NTP

La configuration des clients est relativement simple car souvent inclus dans les « wizards » d’installations. Il suffit de préciser l’adresse IP ou le nom de votre machine hébergeant le serveur NTP comme serveur de temps.

Sur un client Debian 6 existant, il faut installer le package suivant (en root):

[cc lang= »bash »]

apt-get install ntpdate

[/cc]

Puis lancer la commande suivante (si votre serveur de temps est hébergé sur la machine 192.168.0.100):

[cc lang= »bash »]

ntpdate -dv 192.168.0.100

[/cc]

Conclusion

Le protocole NTP étant normalisé, il est bien sur possible de synchroniser toutes vos machines (Linux, BSD, Windows, OS X…) sur votre nouveau serveur de temps.

Catégories
Open-source Planet-libre Reseau

Installer un serveur TFTP pour vos Cisco

Un rapide billet pour rappeler les étapes nécessaires à la mise en place d’un serveur TFTP sur un système GNU/Linux (Debian Squeeze) afin de sauvegarder les configurations de vos routeurs Cisco.

Installation du serveur TFTPD

On utilise le paquet tftpd qui se trouve dans les dépôts Debian (commande à saisir dans un terminal root ou en utilisant la commande sudo):

apt-get install tftpd

On doit ensuite créer le répertoire ou seront stockés les fichiers des configurations Cisco (/srv/tftp dans mon cas).

mkdir /srv/tftp
chmod -R 777 /srv/tftp
chown -R nobody /srv/tftp

Si vous choisissez un autre répertoire que /srv/tftp, il faut:

  1. éditer le fichier de configuration /etc/inetd.conf et changer le répertoire de la ligne commençant par tftp
  2. Redémarrer le serveur TFTP avec la commande /etc/init.d/open-inetd restart

Création du fichier de configuration vide

TFTP est un protocole de communication de bas niveau. Il ne met pas en place de mécanisme d’authentification. La création du fichier de configuration vide doit donc se faire à partir du serveur (il est possible de changer ce comportement et ainsi de permettre au client, c’est à dire au routeur Cisco, de créer lui même le fichier mais je ne le conseille pas pour des questions de sécurité).

On va donc créer un fichier vide nommé cisco-rtr-01-confg:

touch /srv/tftp/cisco-rtr-01-confg
chmod -R 777 /srv/tftp
chown -R nobody /srv/tftp

Sauvegarde de la configuration depuis le routeur Cisco

On en vient enfin au vif du sujet: c’est à dire la sauvegarde de la configuration (IOS running) de notre Cisco sur le serveur TFTP.

# copy run tftp:
Address or name of remote host []? 192.168.0.100
Destination filename [yourname-confg]? cisco-rtr-01-confg
!!
1292 bytes copied in 0.380 secs (3400 bytes/sec)

Il faut bien sûr remplacer l’adresse 192.168.0.100 par l’adresse IP (ou le nom) de votre machine Debian ou vous avez installés TFTP.