Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for July, 2007

Niveau :      
Résumé : grep --color ; echo -e ; reset

C'est le début d'une longue suite d'articles dont les astuces sont trop courtes pour tenir dans un article mais qui sont bien utiles pour la vie de tous les jours.

Un problème avec votre terminal ? S'il devient illisible suite à une commande, à l'aveugle tapez :

$ reset

Besoin de caractères spéciaux avec echo ? Utilisez l'option -e :

$ echo -e "\t:tab\n"

Des problèmes sur un lien IP ? Testez rapidement (et approximativement) un taux de perte :

$ ping -f destinataire

Besoin de mettre en évidence les expressions matchées avec grep ? Mettez les en couleur (gardez le en alias, le défaut ne met pas de couleur dans les | ).

$ grep --color pattern fichier
$ alias grep="grep --color"

Même chose mais utilisable dans un less

$ grep --color=always pattern fichier | less -r

Une dernière astuce, pensez à vous créer un gros fichier vide que vous pourrez supprimer en cas de dépassement de capacité de partition, le temps de faire un vrai ménage. Cela peut par exemple éviter de casser un serveur mysql. C'est l'équivalent de l'option -m pour les partitions mais accessible pour un utilisateur normal. Les partitions sensibles à ces problèmes sont principalement celles de /var

$ dd if=/dev/zero of=/var/lib/FUSIBLE bs=1M count=10 # 10 Mo
$ dd if=/dev/zero of=/var/log/FUSIBLE bs=1M count=10 # 10 Mo

Niveau :      
Résumé : perl -i -pe

La puissance de perl en fait un excellent remplaçant de sed, awk et grep réunis. Il permet de n'apprendre qu'une syntaxe plutôt que 3 et de plus possède des expressions régulières très puissantes.

Je vais tenter de vous convaincre par l'exemple à partir de quelques tâches courantes effectuées habituellement avec ces outils.

Commenter des lignes comme en sed :

$ sed 's/^/#/'
$ perl -pe 's/^/#/'

Formater des lignes comme en awk :

$ awk '{print "$1:$3"}'
$ perl -ne 'split; print "$_[0]:$_[2]\n"'

Sélectionner des lignes comme en grep :

$ grep "^[0-9]"
$ perl -ne 'print if /^[0-9]/'

Perl dispose de l'option -i comme sed. Cette option permet d'éditer les fichiers en ligne. Si un mot est ajouté après -i, le fichier sera sauvegardé.

$ perl -i.bak -pe '$i++; s/^/$i /' file # numérote les lignes du fichier

continue reading...

Niveau :      
Résumé : cutter ; iptables ; tcpkill

Vous êtes sur un firewall ou un routeur et vous voyez passer des connexions qui ne vous plaisent pas. Heureusement vous êtes un admin tout puissant, voire un BOFH. Vous allez donc couper cette petite connexion qui dépasse.

Un outil très simple est à votre disposition, cutter, du paquet du même nom. Commencez par repérer votre connexion à l'aide de iftop, netstat ou /proc/net/ip_contrack (au choix).

Et vous coupez :

$ cutter 10.0.0.1 80

Ou si vous préférez une frappe chirurgicale :

$ cutter 10.0.0.1 80 10.1.0.1 1234

Documentation dans http://www.lowth.com/cutter/.

Si la connexion provient de votre machine, cette méthode ne fonctionnera pas. Mais vous avez une solution de secours légèrement plus complexe qui consiste à couper tout ce qui passe au niveau du firewall :

$ iptables -I INPUT 1 -s 10.0.0.1 -p tcp --sport 80 -j REJECT

Et enfin si la connexion ne vous concerne pas (entre 2 machines de vos amis par exemple ;-) ou si les méthodes précédentes ne fonctionnent pas, il existe une méthode un peu plus violente. Tcpkill (du paquet dsniff) envoie un grand nombre de paquets RST aux machines concernées en espérant casser la connexion.

$ tcpkill host 10.0.0.1 and port 80

Et enfin pour les firewall linux un peu récent il y a conntrack.

Niveau :      
Résumé : http://linux-attitude.fr/

Une URL est un Uniform Resource Locator, un descripteur qui donne une localisation unique de quelque chose.

Une URL a la forme longue suivante :

protocole://user:pass@f.q.d.n:port/chemin

Dans le cas du http, on peut détailler


http://user:pass@f.q.d.n:port/fichier?parametres#position

Mais il existe bien d'autres cas particuliers. Par exemple on peut définir des URL pour l'accès aux bases de données. Chacun a ses spécificités mais ne s'éloigne que très peu du premier cas.

Un FQDN est un fully qualified domain name. C'est un nom complet, comprenant le nom de domaine et le nom local. Exemple www.toto.net.

Une URI est un Universal Resource Identifier. En pratique une URI a la même forme qu'une URL (bien qu'il serait étonnant qu'on y trouve un login et un mot de passe). La différence entre les deux vient de leur utilisation. Une URI sert à identifier de façon unique un document. Ce qui veut dire qu'il n'y a pas nécessairement de document au bout de l'URL correspondante, même si c'est possible, ce n'est qu'un identifiant. Notez que les URI qui ne sont pas des URL sont appelée des URN (Uniform Resource Name)

Étant donné qu'on peut garantir qu'un fdqn appartient à une personne (physique ou morale) de façon unique, on peut être sur qu'elle est capable de gérer elle-même l'unicité des URI qu'elle crée. C'est ainsi qu'on garantit le côté unique des URI.

Et accessoirement si le document en question est public, il est possible de le mettre à disposition sur l'URL correspondante.

Plus d'information à ce propos sur la RFC 2396.

Niveau :      
Résumé : DAV On

Webdav

Que vous hébergiez un site web ou que vous partagiez des données, il est fort probable que vous ayez un serveur FTP. C'est ce qui est souvent considéré comme le plus pratique pour permettre le dépôt de données. Et pourtant j'ai mieux à vous proposer.

Imaginez un outil permettant l'authentification, l'envoi et la réception de fichiers ou de répertoires, un protocole qui traverse les firewalls et qui supporte nativement le ssl, un outil très simple à mettre en place et surtout pour lequel tout le monde ou presque dispose d'un client.

Cet outil c'est webdav !

En effet tout le monde dispose d'un client webdav :

  • gnome : urls en dav://serveur/ dans nautilus
  • kde : url en webdav://serveur/ dans konqueror
  • pur Linux : montage réseau avec davfs
  • Windows XP : ouvrir une url (http://serveur/) en tant que dossier web dans internet explorer
  • Windows Vista : monter un disque réseau

Ces clients permettent d'accéder à un partage webdav comme on le fait avec n'importe quel navigateur de fichier. De plus dans la plupart des cas il est possible d'éditer les fichiers directement à distance (notez que pour windows XP, seules les applications Microsoft Office le peuvent).

Voilà pour la simplicité. D'autre part webdav est une extension de HTTP qui tourne sur le port 80 par défaut, par conséquent il traverse la plupart des firewalls et des proxy.

Configuration

Et enfin voyons le côté serveur. Nous allons travailler à partir d'un serveur apache déjà installé. Si ce n'est pas le cas apt-get install apache2 vous en fournira un déjà configuré (attention cela ne fonctionne qu'à partir de la version 2).

Tout d'abord chargeons les modules qui conviennent. Si vous êtes sous debian :

$ a2enmod dav_fs dav

Sinon éditez votre fichier de configuration apache et ajoutez

LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so

continue reading...