Un peu de couleur pour le prompt de bash …

Dans cet exemple, nous allons mettre un peu de couleur au prompt du bash. L’exemple est réalisé sous une centos 5 mais il est bien entendu adaptable à d’autres distributions.

Editons le fichier /etc/bashrc et ajoutons à la fin de ce fichier :

alias ls="ls --color"
alias grep="grep --color"

if [[ ${EUID} == 0 ]] ; then
PS1='\
\[\033[0;00m\][\
\[\033[1;37m\]\[\033[41m\]\u\
\[\033[0;00m\]@\
\[\033[0;35m\]\h\
\[\033[0;00m\]:\
\[\033[0;34m\]\w\
\[\033[0;00m\]]\
\[\033[0;00m\]\$\
 '
else
PS1='\
\[\033[0;00m\][\
\[\033[0;31m\]\u\
\[\033[0;00m\]@\
\[\033[0;35m\]\h\
\[\033[0;00m\]:\
\[\033[0;34m\]\w\
\[\033[0;00m\]]\
\[\033[0;00m\]\$\
 '
fi

Les deux premières lignes définissent des alias pour coloriser les commandes ls et grep.
Ensuite nous définissons deux prompts différents : un pour le root et un autre pour les utilisateurs lambda.
La variable d’environnement PS1 permet de definir l’affichage du prompt.

Les codes couleurs sont les suivants :

\033[0;30m : Noir
\033[0;31m : Rouge
\033[0;32m : Vert
\033[0;33m : Jaune
\033[0;34m : Bleu
\033[0;35m : Magenta
\033[0;36m : Cyan
\033[0;37m : Gris clair

Si l’on remplace le [0 par [1, on obtient l’équivalent de la couleur en plus clair. Ainsi 0;37 étant le gris clair, 1;37 donnera du blanc.
En remplacant [0 par [4, le texte sera souligné.

Il est également possible de définir la couleur de fond de texte :

\033[40m : Noir
\033[41m : Rouge
\033[42m : Vert
\033[43m : Jaune
\033[44m : Bleu
\033[45m : Magenta
\033[46m : Cyan
\033[47m : Gris clair

Les variables sont :
\h : le hostname (jusqu’au premier ‘.’ )
\H : le hostname complet
\t : l’heure au format HH:MM:SS sur 24H
\T : l’heure au format HH:MM:SS sur 12H
\u : le username
\w : chemin complet vers le répertoire courant
\W : répertoire courant (format court)
\$ : # si root ou $ si utilisateur lambda
\d : la date
\# : le numéro de la commande dans la session courante
\! : le numéro de la commande dans l’historique.

Bloquer les pubs avec squid

Squid est un proxy-web permettant de réduire la bande passante utilisée. Et pour la réduire encore plus, nous allons bloquer les pubs (ads) qui polluent le web :-).

La config utilisée : Squid-2.6.XX sur une Centos 5.
S’adapte très facilement sur d’autres configs.

Nous considérons que Squid est déjà fonctionnel.

Lançons la commande :

/usr/bin/wget -O /etc/squid/ads_list.txt http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex\&showintro=1\&mimetype=plaintext

Maintenant, dans le fichier /etc/squid/squid.conf, on rajoute ces lignes :

...
acl ads dstdom_regex "/etc/squid/ads_list.txt"
...
http_access2 deny ads
...
deny_info  ERR_ACCESS_DENIED_ADS    ads
...

Créons le fichier /etc/squid/errors/ERR_ACCESS_DENIED_ADS :

<html><body>
<!-- Ad Removed by (%s) -->
</body></html>

Ce fichier permet d’afficher une page vide lorsqu’un ad est bloqué. Cela évite d’avoir une page du style « Generated by Squid (xxxx) on xxxxxxx » pour cette acl.

On demande a squid de recharger sa configuration :

/etc/init.d/squid reload

Et voici le résultat sur un site pris au hasard :

Sans filtrage :

Et avec filtrage :

Pour aller plus loin, il est facile de faire un petit script, appelé par une tâche cron, qui sera chargé de mettre à jour automatiquement la liste des ads à bloquer et qui fera le reload de squid.