mardi 4 novembre 2014

Vim - Les commandes à retenir

vim


Dans ce billet, je vais lister quelques commandes vraiment pratiques dans l'utilisation quotidienne de Vim. C'est en quelque sorte "The ultimate survial guide of Vim". Cette liste est bien sûr non exhaustive et il en existe encore une multitude. N'hésitez pas à les faire partager si vous avez.


  • Les commandes de bases (communes à l'éditeur "vi")
:wq (ou alors :x)Sauvegarde puis ferme le fichier
:q!Ferme le fichier sans enregistrer les modifications
:45Positionne le curseur à la 45ème ligne du fichier
ddSupprime la ligne courante
iPasse en mode insertion (Touche "Echap" pour sortir du mode)

  • Effectuer un remplacement massif dans le fichier
Une fois le fichier ouvert, taper l'expression suivante :%s/texte_origine/nouveau_texte/g puis pressez la touche "Entrer"

  • Commenter / dé-commenter plusieurs lignes à la fois
1) Se placer tout d'abord sur la permière ou dernière ligne de la zone à commenter
2) Faire un CTRL+V (V comme Visual Block)
3) Se rendre sur la dernière ligne (ou la première selon votre point de départ)
4) Taper ensuite :s/^/# et pressez la touche "Entrer"

Pour réaliser l'opération inverse, c'est à dire dé-commenter plusieurs lignes, il suffit de répéter les points ci-dessus mais en remplaçant l'expression de substitution de l'étape 4 par :s/^#/

  • Voir les différence entre deux fichiers
vimdiff fichierA.txt fichierB.txt
NB: Avouez que cela est bien plus lisible que la commande "diff" de base.

  • Convertir un fichier Windows au format Unix
Ouvrir le fichier et saisir la commande suivante :set ff=unix puis :x pour enregistrer les modifications et quitter. C'est un équivalent de l'outil dos2unix (ex: dos2unix monfichier.txt)

  • Éditer plusieurs fichiers à la fois
1) Saisir en paramètre tous les fichiers a éditer. Exemple: vim fichierA.txt fichierB.txt fichierC.txt (ou vim * si vous être un grand fou ^^)
2) :wn pour enregistrer les modifications et passer au fichier suivant

  • Couper/coller plusieurs lignes
1) Exemple: on coupe 4 lignes après le curseur: 4d
2) Positionner le curseur à l'endroit souhaité puis coller les lignes en dessus du curseur: p (ou P pour les coller avant le curseur)

mercredi 14 mai 2014

Linux - Le routeur du pauvre



Oyé oyé les amis !

Avant de commencer, j'apporte une précision à mon titre d'article quelque peu provocateur. En effet de nombreux routeurs physiques (pour ne pas dire tous) fonctionnent avec un OS ayant une base linux. Donc aujourd'hui je vais vous montrer qu'il est très simple de transformer votre PC linux en routeur ! Si, si ! Pas besoin de dépenser des milles et des cents dans un routeur matériel, linux le fait pour vous !

En effet, il vous faut:
  • 1 PC (par exemple celui qui prend la poussière dans le grenier)
  • 2 cartes réseaux (c'est bien sûr un minimum, sinon on va pas router grand chose...à moins de tagguer les trames et de relier la carte sur un port du switch en mode trunk mais je ne vais pas compliquer la chose ici).
  • 1 OS Linux

Et maintenant ?

Pour commencer, il faut configurer les IP sur chacune des cartes réseaux. Dans un second temps il faut activer le forwarding. Pour cela, deux méthodes s'offrent à vous: soit de façon temporaire soit de façon permanente.


  • Activation temporaire (valable jusqu'au prochain redémarrage)
(ceci est un exemple à saisir en ligne de commande)
ifconfig eth0 192.168.1.1 255.255.255.0
ifconfig eth1 10.0.0.1 255.0.0.0

Ensuite il faut modifier le fichier "ip_forward" en mettant la valeur à 1
echo 1 > /proc/sys/net/ipv4/ip_forward

  • Activation permanente
1. Modification du fichier "/etc/network/interfaces" ou "/etc/sysconfig/network-scripts/ifcfg-ethX" suivant la distribution utilisée :

---> Si fichier "/etc/network/interfaces"
# interface réseau 1
    auto eth0
    iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255

# interface réseau 2
    auto eth1
    iface eth1 inet static
        address 10.0.0.1
        netmask 255.0.0.0
        network 10.0.0.0
        broadcast 10.255.255.255



--> Si fichier "/etc/sysconfig/network-scripts/ifcfg-ethX"

Sur le fichier "ifcfg-eth0":
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.1
BROADCAST=192.168.1.255
HWADDR=00:11:22:33:44:55
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet

et sur le fichier "ifcfg-eth1":
DEVICE=eth1
BOOTPROTO=static
IPADDR=10.0.0.1
BROADCAST=10.255.255.255
HWADDR=aa:bb:cc:dd:ee:ff
NETWORK=10.0.0.0
ONBOOT=yes
TYPE=Ethernet


2. Autorisation du forwarding en éditant le fichier "/etc/sysctl.conf" ou "/etc/sysconfig/network" suivant la distribution utilisée :
---> Si fichier "/etc/sysctl.conf":
net.ipv4.ip_forward = 1

---> Si fichier "/etc/sysconfig/network":
FORWARD_IPV4=true

3. Redémarrer les services réseau
service network restart


Résumé

Au final, notre petit Linux nous permet de faire la passerelle entre nos deux réseaux. Avouez que cela est plus trivial, non ? On pourra bien sûr (et il est fortement recommandé de) filtrer les flux. Par exemple avec IPTable.... (d'ailleurs je pense que ce sera l'objet d'un futur article).


Une alternative ?

Oui, enfaite il existe une distribution toute prête, il s'agit de: ZeroShell. N'exagérons rien non plus puisqu'elle permet d'offrir plein d'autre service réseau comme le DNS, le DHCP, Radius et j'en passe. Pour plus d'information, voici le lien vers le site officiel : www.zeroshell.net