rewrite vbulletin sur nginx

Pense bête pour les possesseurs de forum vbulletin avec nginx comme moteur web. Avec l’add-on vbseo, c’est assez simple. Sans, c’est un poil plus la galère.

rewrite ^/showthread.php/.*$ /showthread.php last;
rewrite ^/member.php/.*$ /member.php?$args;
rewrite ^/forumdisplay.php/.*$ /forumdisplay.php last;
rewrite ^/blog.php/.*$ /blog.php last;
rewrite ^/entry.php/.*$ /entry.php last;
rewrite ^/list.php/([^/]*/)([0-9]+) /list.php?r=$1$2;
rewrite ^/content.php/(.*) /content.php?r=$1;

à ajouter dans votre ficher de configuration du vhost concerné (évidemment dans le répertoire d’nginx).

Hello,

Un dimanche sous la grisaille, debout à 8h, une connexion ADSL disponible et donc un nouveau thème !

J’ai cherché 30 secondes sur le site de WordPress avec comme mot clé ‘minimal’ et voilà le résultat. Environ une heure pour traduire les phrases anglaises en français de france et voili. Si quelqu’un est intéressé pour récupérer l’archive, qu’il fasse signe.

Afficher les numéros de ligne d’un fichier

Pour compléter le précédent article concernant l’affichage du contenu encadré par deux numéros de ligne, voici la commande permettant de connaitre le numéro de ligne d’un fichier de texte foo :

grep -n "^" foo

Un exemple :

initPaycay:truc init$ cat foo
ma premiere ligne
ma deuxieme ligne
ma troisieme ligne

devient :

initPaycay:truc init$ grep -n « ^ » foo
1:ma premiere ligne
2:ma deuxieme ligne
3:ma troisieme ligne

Afficher les lignes numérotées d’un fichier texte

Pas mal galéré pour faire un truc tout simple : afficher les lignes entre deux numéros de ligne. Par exemple, j’ai un gros fichier texte, et je souhaite afficher le texte du fichier foo de la ligne 56 à 103, il suffit de faire :

awk 'NR==56,NR==103'< foo

Astuce trouvée ici, une vraie mine d’or ! ;-)

Convertir une date unix

Toujours pratique pour permettre de lire une date dans un fichier de log, cette commande permet de transformer une date Unix en une date compréhensible par des humains :-)

En pratique, si vous obtenez ce genre de log :

pwet init # tail -n 1 /var/log/ConsoleKit/history
1284578000.873 type=SEAT_SESSION_ADDED : seat-id='Seat50' session-id='Session50' session-type='' session-x11-display='' session-x11-display-device='' session-display-device='/dev/ssh' session-remote-host-name='xxx.xxxxx.com' session-is-local=FALSE session-unix-user=1000'

Avec la commande suivante, la date devient :

pwet init # date -d @1284578000.873
mer. sept. 15 21:13:20 CEST 2010

Vous l’aurez vite compris, il faut ajouter la date non compréhensible après la commande :

date -d @ma_date_illisible

Pour les plus curieux, le man de la commande date

Exercices sur les commandes de base UNIX

Hello,

Un petit bookmark intéressant que j’ai glané, permettant de se rafraichir la mémoire sur les commandes de base d’un Unix. Les solutions sont aussi disponibles, ce qui rend l’utilité de ce site indispensable.

Zou, au boulot, il faut réviser !

convertir des fichiers en minuscule

Toujours afin d’uniformiser un répertoire contenant des fichiers ayant une graphie différentes, un petit script utile :

for i in *;
do mv "$i" "$(echo $i|tr A-Z a-z)";
done

Un exemple permet toujours de mieux comprendre :

-rw-r–r– 1 moi moi 0 15 juil. 17:25 CMONFICHIER
-rw-r–r– 1 moi moi 0 15 juil. 17:25 fichier
-rw-r–r– 1 moi moi 0 15 juil. 17:25 fichierAMOI
-rw-r–r– 1 moi moi 0 15 juil. 17:25 MonFichierAMoi

avec la commande (en une seule ligne) :

for i in *; do mv "$i" "$(echo $i|tr A-Z a-z)"; done

Le répertoire devient :

-rw-r–r– 1 moi moi 0 15 juil. 17:25 cmonfichier
-rw-r–r– 1 moi moi 0 15 juil. 17:25 fichier
-rw-r–r– 1 moi moi 0 15 juil. 17:25 fichieramoi
-rw-r–r– 1 moi moi 0 15 juil. 17:25 monfichieramoi

tr est une commande permettant de jouer avec une chaine de caractère, plus facilement qu’avec l’ami sed.

Remplacer des espaces dans un nom de fichier

Toujours pratique pour renommer des fichiers et ainsi avoir une structure uniforme dans un répertoire.Ce script remplace les espaces en underscore. Indispensable pour renommer des images, des mp3 ou autre ;-) Avec ce script, inutile de sortir l’arme lourde (lire un logiciel (le trouver, le télécharger, l’installer et le comprendre)) pour faire une manip aussi pratique.

Postulat de départ (ça jette :) ) :

-rw-r–r– 1 moi staff 0 10 jul 13:51 truc a moi
-rw-r–r– 1 moi staff 0 10 jul 13:52 truc a moi.jpg
-rw-r–r– 1 moi staff 0 10 jul 13:52 trucamoi.jpg

un coup de baguette magique :

ls | while read foo; do mv "$foo" "${foo// /_}";done

cela donne :

-rw-r–r– 1 moi staff 0 10 jul 13:51 truc_a_moi
-rw-r–r– 1 moi staff 0 10 jul 13:52 truc_a_moi.jpg
-rw-r–r– 1 moi staff 0 10 jul 13:52 trucamoi.jpg

nice ;-)

surveiller tous les fichiers de log

J’annonce : commande à rallonge qui tue !

Ce script permet de tail-er tous les fichiers de logs contenus dans le répertoire /var/log. De cette manière, dès qu’un évènement surviendra sur votre serveur, les lignes du fichier de journalisation concerné apparaitront. Trop fort ;-) Par exemple, les fichiers contenus dans le répertoire /var/log/samba sont aussi pris en compte, tous les fichiers reconnus comme du texte sont tail-er.

Exemple de sortie à l’écran :

==> /var/log/syslog <==
Jul 8 07:11:22 foo dhcpd: DHCPINFORM from 172.17.18.191 via 93.50.50.254
Jul 8 07:11:22 foo dhcpd: DHCPACK to 172.17.18.191 (00:1a:a0:22:a3:54) via eth0
Jul 8 07:11:26 foo dhcpd: DHCPINFORM from 172.17.18.191 via 93.50.50.254
Jul 8 07:11:26 foo dhcpd: DHCPACK to 172.17.18.191 (00:1a:a0:22:a3:54) via eth0
Jul 8 07:11:30 foo dhcpd: DHCPINFORM from 93.50.50.106 via 93.50.50.254
Jul 8 07:11:30 foo dhcpd: DHCPACK to 93.50.50.106 (00:13:d4:22:10:b6) via eth0
Jul 8 07:11:58 foo dhcpd: DHCPDISCOVER from 00:12:3f:22:13:30 via 93.50.50.254: network partage: no free leases
Jul 8 07:11:58 foo dhcpd: DHCPREQUEST for 93.50.50.142 (93.50.55.68) from 00:22:3f:5f:13:30 via 93.50.50.254: unknown lease 93.50.50.142.
Jul 8 07:12:04 foo dhcpd: DHCPINFORM from 172.17.18.140 via 93.50.50.254
Jul 8 07:12:04 foo dhcpd: DHCPACK to 172.17.18.140 (00:22:c9:2e:43:59) via eth0

==> /var/log/aptitude <==
IMPORTANT: this log only lists intended actions; actions which fail due to
dpkg problems may not be completed.

Will install 2 packages, and remove 0 packages.
===============================================================================
[UPGRADE] tshark 1.0.2-3+lenny8 -> 1.0.2-3+lenny9
[UPGRADE] wireshark-common 1.0.2-3+lenny8 -> 1.0.2-3+lenny9
===============================================================================

Log complete.

==> /var/log/daemon.log <==
Jul 8 07:11:22 foo dhcpd: DHCPINFORM from 172.17.18.191 via 93.50.50.254
Jul 8 07:11:22 foo dhcpd: DHCPACK to 172.17.18.191 (00:33:a0:02:a3:54) via eth0
Jul 8 07:11:26 foo dhcpd: DHCPINFORM from 172.17.18.191 via 93.50.50.254
Jul 8 07:11:26 foo dhcpd: DHCPACK to 172.17.18.191 (00:33:a0:02:a3:54) via eth0
Jul 8 07:11:30 foo dhcpd: DHCPINFORM from 93.50.50.106 via 93.50.50.254
Jul 8 07:11:30 foo dhcpd: DHCPACK to 93.50.50.106 (00:33:d4:e1:10:b6) via eth0

La commande est la suivante :

find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f

Elle est certainement pas optimisée, à la vue de la tonne de pipe, ce qui peut-être problématique dans certains cas de figures. Hônnetement, osef pour ma part, cela me permet d’avoir d’un coup d’oeil tous les fichiers de log, pratique en cas d’installation de nouveaux services.

Supprimer lignes dupliquées

Cette commande n’est pas utilisable tous les jours, mais pratique pour une liste d’adresses IP ou de machines qui ont été pingués. A lire dans un prochain billet ;-)

Tout d’abord une liste très utile enregistré dans un fichier nommé foo:

192.168.0.1
192.168.0.2
192.168.0.1
192.168.0.1
192.168.0.3

un nettoyage avec ce code :

awk '!a[$0]++' foo

Le résultat donne :

192.168.0.1
192.168.0.2
192.168.0.3

Qui utilise ce genre de chose ? je veux des noms :-p