Messages étiquettés Linux

Linux : Surligner les occurrences d’un mot sur la sortie standard

Il peut être pratique de voir les occurrences d’une mot après avoir fait un cat sur un ou plusieurs fichiers sans pour autant masquer le reste (le cas de grep). Je partage avec vous un script qui permet de surligner ces occurrences :

Utilisation:
cat fichier | highlight « occurence »

Code :

#! /bin/bash
perl -p -e 's/'$1'/\e[31m'$1'\e[0m/'

A vous de l’utiliser, pour faciliter la tâche de ceux qui débutent, voici comment le rendre accessible via une simple commande « highlight » de votre shell :

1. Créez le fichier /bin/highlight et coller le script ci-dessus dans ce fichier
2. Donnez les droits d’exécution aux utilisateurs : chmod a+x /bin/highlight
3. Exécutez la commande highlight et les paramètres qui vont bien :)

Tags: , ,

Linux : Convertir UNICODE UTF-16 en UTF-8

Voici une méthode simple et rapide pour convertir des fichiers UTF-16 issus du monde Windows :

Afin d’avoir plus d’informations sur le fichier, nous allons utiliser file :

file 20120513_chat.log
20120513_chat.log: Little-endian UTF-16 Unicode English text, with CRLF line terminators

Nous avons bien à faire à un fichier encodé en UTF-16 il va donc falloir le convertir en UTF-8 avec iconv :

iconv -f UTF-16 -t UTF-8 -o fichier_de_sortie.log 20120513_chat.log

Si on ré-exécute file avec le fichier obtenu :

file fichier_de_sortie.log
UTF-8 Unicode English text, with CRLF line terminators

Il est réencodé en UTF-8 et va permettre l’utilisation de grep :)

Tags: , , ,

Linux : détruire facilement des fichiers avec shred et wipe

Comme vous le savez sûrement, un fichier n’est jamais vraiment supprimé du système, il est très souvent possible de récupérer des fichiers qui ont été supprimé quelques heures/jours/mois voire années avant l’utilisation d’une application telle que foremost (Linux) ou EasyRecovery (Windows).

Deux commandes permettent de détruire simplement vos dossiers/fichiers sous linux afin d’éviter toute récupération possible de ces fichiers/dossiers

La commande shred (qui signifie déchiqueter) va permettre de détruire un fichier :

shred nom-du-fichier
#Avec plusieurs passes :
shred -n nombre_passes nom-du-fichier
#En supprimant le résultat à la fin :
shred -u nom-du-fichier

 

shred va simplement réécrire le fichier au nombre de passes désirées avec des caractères aléatoires

Attention, aucune confirmation ne sera demandée ;)

La seconde commande est wipe, qui va permettre de détruire des dossiers et en plus de manière récursive :

wipe -r chemin-du-dossier

  Il existe plusieurs options pour chacune de ces deux commandes, mais pour ça :

RTFM

Tags: , , , ,

Règles de routage simple pour iptables

Un petit billet dédié pour mon ami foireatout qui aurait besoin de connaître quelques commandes afin d’implémenter des règles pour bien débuter dans ce monde :) Les règle ci-dessous sont très loin d’exploiter toute la puissance de netfilter 😉

Pour faire court, iptables est un logiciel libre qui va permettre de gérer le framework netfilter qui implémente un pare-feu (à partir du noyau 2.4).

Pour notre exemple, notre machine est frontale et possède deux interfaces réseau : WAN (eth0) et LAN (eth1)

Sur l’interface WAN (eth0) plusieurs adresses IP publiques sont directement reliées :

eth0 => 91.xx.xx.80

eth0:0 => 91.xx.xx.82

eth0:1 => 91.xx.xx.83

eth0:2 => 91.xx.xx.84

L’adresse de notre interface LAN eth1 est 192.168.1.254 et notre réseau 192.168.1.0/24

Parmi les machines qui sont sur le LAN nous avons :

machine utilisation adresse ip ip publique à utiliser redirection de ports nat d’adresse ip
www serveur web 192.168.1.10 91.xx.xx.84 91.xx.xx.84
asterisk serveur sip 192.168.1.11 91.xx.xx.82 UDP : 10000-20000,5060
srvtse serveur TSE 192.168.1.12 91.xx.xx.80 TCP : 3389
srvmail Serveur mail 192.168.1.13 91.xx.xx.83 TCP : 25,110,143
admin Machine administration 192.168.1.20 91.xx.xx.80

Avant de commencer

Le travail ci-dessous va utiliser la table NAT qui permet d’effectuer de la traduction d’adresses réseau (le NAT) pour les paquets. Ensuite nous allons utiliser les chaines POSTROUTING, PREROUTING et les cibles SNAT, DNAT et MASQUERADE.

Chaine PREROUTING et cible DNAT

Dans la chaine PREROUTING (avant routage) on ne peut modifier que l’adresse de destination (et les numéros de ports au cas où ils seraient déja utilisés), d’ou l’utilisation de la cible DNAT (NAT de destination).

Chaine POSTROUTING et cible SNAT

Dans la chaine POSTROUTING (après routage) on ne peut modifier que l’adresse source, d’ou l’utilisation de la cible SNAT (NAT source).

Cible MASQUERADE

Cette cible permet de déterminer l’adresse IP de sortie pour chaque paquet, ce qui est moins performant car il va vérifier l’interface de sortie pour chaque connexion. MASQUERADE est utilisée dans le cas d’une adresse IP publique dynamique, dans le cas d’IP fixe nous préfèrerons utiliser la cible SNAT en spécifiant l’adresse IP de sortie.

Si déja vous êtes perdu(e) attaquez-vous à iptables-tutorial de Oskar Andreasson à cette adresse : http://www.inetdoc.net/guides/iptables-tutorial/

Simple passerelle

La machine admin a simplement besoin d’utiliser notre serveur en tant que passerelle :

iptables -t nat -A POSTROUTING -s 192.168.1.20/32 -o eth0 -j SNAT --to-source 91.xx.xx.80

ou en utilisant la cible MASQUERADE :

iptables -t nat -A POSTROUTING -s 192.168.1.20/32 -o eth0 -j MASQUERADE

Si toutefois vous deviez permettre à tout votre réseau 192.168.1.0/24 d’utiliser le serveur en passerelle, remplacez simplement 192.168.1.20/32 par 192.168.1.0/24

NAT d’adresse IP publique

La machine www doit avoir une IP publique nattée (91.xx.xx.84).

Les commandes suivantes sont pour permettre les connexions entrantes et la seconde les connexions sortantes

iptables -t nat -A PREROUTING -d 91.xx.xx.84/32 -i eth0 -j DNAT --to-destination 192.168.1.10
iptables -t nat -A POSTROUTING -s 192.168.1.10/32 -o eth0 -j SNAT --to-source 91.xx.xx.84

Redirection de ports

Le serveur TSE utilise l’IP publique 91.xx.xx.80 et on veut rediriger le port 3389 TCP :

iptables -t nat -A PREROUTING -d 91.xx.xx.80/32 -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.12:3389
iptables -t nat -A POSTROUTING -s 192.168.1.12/32 -o eth0 -j SNAT --to-source 91.xx.xx.80

Le serveur de mail utilise l’IP publique 91.xx.xx.83 et les ports TCP 25, 110 et 143 :

iptables -t nat -A PREROUTING -d 91.xx.xx.83/32 -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.1.13:25
iptables -t nat -A PREROUTING -d 91.xx.xx.83/32 -i eth0 -p tcp -m tcp --dport 110-j DNAT --to-destination 192.168.1.13:110
iptables -t nat -A PREROUTING -d 91.xx.xx.83/32 -i eth0 -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.1.13:143
iptables -t nat -A POSTROUTING -s 192.168.1.13/32 -o eth0 -j SNAT --to-source 91.xx.xx.83

Le serveur asterisk utilise l’IP publique 91.xx.xx.82 et on veut rediriger le port 5060 UDP :

iptables -t nat -A PREROUTING -d 91.xx.xx.82/32 -i eth0 -p udp -m udp --dport 5060 -j DNAT --to-destination 192.168.1.11:5060
iptables -t nat -A POSTROUTING -s 192.168.1.11/32 -o eth0 -j SNAT --to-source 91.xx.xx.82

Redirection d’une plage de ports

Le serveur asterisk utilise l’IP publique 91.xx.xx.82 et on veut rediriger la plage de ports 10000 à 20000 UDP :

iptables -t nat -A PREROUTING -d 91.xx.xx.82/32 -i eth0 -p udp -m udp --dport 10000:20000 -j DNAT --to-destination 192.168.1.11:10000-20000

Si vous ne l’avez pas déja fait avec une autre règle (cf. la dernière règle pour la redirection de ports), entrez cette commande :

iptables -t nat -A POSTROUTING -s 192.168.1.11/32 -o eth0 -j SNAT --to-source 91.xx.xx.82

Démarrage machine

Si vous redémarrez votre serveur sachez que les règles iptables ne seront pas restaurées automatiquement, des outils sont là pour vous aider :

iptables-backup et iptables-restore

Tags: , , ,

Installer un serveur OpenVPN

Aller zou ! Un petit billet histoire de se mettre en forme sur l’installation d’un serveur OpenVPN. Vous allez voir que c’est assez simple et rapide à mettre en place (j’ai mis au maximum 10 minutes)

Avant toute chose, assurez-vous que vos serveurs qui vont se « VPNer » doivent avoir la même heure pour les certificats, donc utilisez la commande ntpdate :)

Lisez la suite pour installer ce serveur :)

Lire le reste de cet article »

Tags: , ,

La commande top, traduction et explications

Suite à un grand nombre de demandes d’explications sur la commande top j’ai pris quelques minutes pour réaliser un billet sur une traduction du fonctionnement et une traduction des résultats fournis par top.

top est une commande Linux qui permet de voir la consommation en temps machine, mémoire et processeur, en gros la charge de votre système. Je passerai aussi quelques lignes pour vous expliquer la notion de load average (charge moyenne) du système. (cf. Article sur la charge moyenne)

Voici la capture d’un écran fourni par top à partir duquel je vais faire mes explications :


Lire le reste de cet article »

Tags: , , ,

Exécuter une commande en différé avec Linux

Vous devez exécuter une seule fois une commande mais d’ici une heure ou quelques minutes … voici une commande : at elle permet de réaliser cette fonction.

Imaginons vous souhaitez recharger apache (/etc/init.d/apache2/reload) à 22h48 :

root@archimede:~# at 22h48
warning: commands will be executed using /bin/sh
at> /etc/init.d/apache2 reload
at>
job 2 at Sun May 16 22:48:00 2010

Vous entrez la commande « at » suivi de l’heure, un prompt vous demandera quelle commande vous voulez exécuter à cette heure (et d’autres commandes si vous en avez) validez par entrée chaque saisie. Une fois terminée appuyez sur Ctrl+D

Informations supplémentaires :

On peut aussi lui fournir l’un des arguments suivants : midnight (minuit), noon (midi), ou teatime (l’heure du thé, soit 16 heures). Il est également possible de fournir un suffixe du type AM (matin), ou PM (après-midi) avec une heure sur un cadran de 12 heures. On peut indiquer le jour de lancement, en précisant une date du type nom-du-mois (en anglais) jour et éventuellement année, ou encore une date du type MMJJAA ou MM/JJ/AA ou JJ.MM.AA. La date doit suivre l’heure. On peut indiquer une heure de la forme now (maintenant) + nombre d’unités, où les unités peuvent être minutes, hours (heures), days (jours), ou weeks (semaines) et on peut également demander à at de déclencher le travail le jour même en ajoutant le suffixe today ou le lendemain en ajoutant tomorrow.

Exemple : ce midi (même commande que précédemment) :

root@archimede:~# at noon
warning: commands will be executed using /bin/sh
at> /etc/init.d/apache2 reload
at>
job 2 at Sun May 16 22:48:00 2010

Commandes supplémentaires

Vous pouvez utiliser la commande atq pour afficher la liste des opérations programmées :

3       Mon May 17 22:48:00 2010 a root
4       Mon May 17 22:50:00 2010 a root

La commande atrm permet de supprimer une tâche programmée en la combinant avec son numéro de tâche (obtenu grâce à atq) :

atrm 3

Si vous souhaitez planifier des tâches à répétition, lisez cet article : Tâches planifiées avec Linux

Tags:

Lancer des programmes Linux en arrière plan

Question que beaucoup de gens posent : Comment lancer des processus en arrière plan sous linux ?

Dans ce billet je vais expliquer comment lancer des processus qui sont en tâche de fond et restent indépendants de session ouverte

1. Avec le « et commercial ou esperluette » : &

Pour lancer un processus en arrière plan ajoutez & à la fin de la commande :

cp /home/minimoi/asterisk-1.4.21.tar.gz /usr/local/src/ &

Votre commande est en arrière plan.

2. Avec la commande nohup :
Avec la commande nohup le processus démarré n’est plus lié à votre session, vous pouvez vous déconnecter le processus est lancé en arrière plan :

nohup wget http://www.admin6.fr/video_de_ghislain.avi

Commentaire : Il y a aussi screen qui permet de faire la même chose que nohup mais ce n’est pas le sujet ici on veut juste faire le plus simple 😉 Un prochain billet sur l’utilisation de screen peut-être

Tags: ,

Serveur Mail complet POP/SMTP/IMAP, SpamAssasin, ClamAV, Webmail …

Voici la solution qui va vous permettre d’installer un serveur mail sous linux (ici le tuto et le script sont pour une distribution Debian).Le but de ce billet est de vous faire découvrir un script d’installation automatique et 100% fonctionnelle d’un serveur Mail avec POP, IMAP, SMTP, Webmail …

Voici le menu :

  • BackEnd LDPA ou MySQL (Dans ce billet on utilisera la solution avec MySQL)
  • SMTP avec postfix
  • Webmail avec RoundCube ou SquirrelMail
  • POP/IMAP avec Dovecot
  • Anti-Spam avec SpamAssasin
  • Antivirus ClamAV et Amavisd
  • Support SSL
  • Gestion par interface Web de vos comptes Mails
  • Multi-Domaines

Lire le reste de cet article »

Tags: , ,

Changer éditeur par défaut

Des fois vous ne pouvez supporter nano (comme moi), soit vous le désinstallez et ca règle le problème ou soit vous avez envie de sélectionner un éditeur spécifique, c’est possible grâce à la commande :

update-alternatives --config editor

Vous aurez ceci :

Il y a 3 alternatives fournissant « editor ».

 Sélection    Alternative
-----------------------------------------------
 1    /bin/ed
*+        2    /bin/nano
 3    /usr/bin/vim.tiny

Appuyez sur Entrée pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :3

Et voilà 😉 Problème réglé

PS : pratique pour les crontabs 😉

Tags: , , ,