Catégories
BASH

Verifiez vos urls grace a linklint

Vous administrez un ou plusieurs annuaires ?
Vous possédez un serveur dédié sous linux (hop hop hop, circulez, pas de windows ici) ?
Vous souhaitez vérifier l’intégralité de vos liens, sans cliquer sur chaque lien bien sur ?

Toutes nos lignes sont occupées, ne quittez pas, une opératrice va prendre votre appel. Votre temps d’attente est inférieur a 1 minute.

Commençons donc par ouvrir notre boite a outil pour savoir de quoi nous allons avoir besoin, et définissons un roadbook pour savoir ou nous allons.

1 – Ma boite a outil :

Je vous paste le code du script commenté, et une petite explication viendra après.

– Nous allons utiliser linklint pour vérifier nos liens => aptitude install linklint.
– Savoir se servir un minimum du client mysql (je vous rassure l’exemple est commenté).
– Si vous souhaitez recevoir les rapports par email, un MTA fonctionnel.
– Un peu de graisse, une cle de 25, un compresseur, une bonne biere et on y va …

2 – La feuille de route :

Je vais en fait vous expliquer ce que va faire ce gentil script BASH qui va travailler pour nous.

– Il va commencer par extraire les urls présentes dans votre BDD.
– Il va ensuite passer un coup de linklint sur ces urls pour vérifier leur validité.
– Et il va au choix envoyer le rapport par email, ou placer le CR de linklint au format HTML dans un répertoire de votre site web.

3 – On enfile le bleu de travail et on y va

Je vous paste le code du script commenté et on verra après son fonctionnement.

linkchecker.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
 
export PATH;
 
# On load le fichier de config
CONFFILE="./linkchecker.config"
[ -f $CONFFILE ] && source $CONFFILE
 
# Si on a un fichier en parametre, on check ce fichier
if [ $# -eq 1 ]
then
    urls_list=$1
else # Sinon on travail sur la BDD
 
# On genere la liste des url
echo "SELECT " $mysql_field " FROM " $mysql_table " WHERE "$mysql_field"!=''" | mysql -h $mysql_host -u $mysql_user -p''$mysql_pas
sword'' -N -D $mysql_bdd > urls_list
fi
 
# Ensuite pour chaque url on va utiliser linklint
linklint @@urls_list -quiet -error -doc report
 
# On efface le fichier  urls_list si on
# a pas passe le fichier en parametre
if [ $# -ne 1 ]
then
rm urls_list
fi
 
# On recupere le fichier urlfail.html SI il existe
if [ -e "report/urlfail.html" ]
then
    # On souhaite un rapport par email
    if ${report_by_email:=true} ; then
    cat ./report/urlfail.html | mail -a"Content-Type: text/html;" -s "Linkchecker Report" $mail_dest
    else # Pas de rapport par mail, mais copie du fichier dans un rep
	cp ./report/urlfail.html $html_report_path
    fi
fi
 
# C'est termine, alors on delete le directory "report"
rm -rf ./report

Maintenant passons au fichier de configuration :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Un rapport par email ou pas
report_by_email=true;
 
# Si rapport par email, votre email
mail_dest="[email protected]";
 
# Si pas de rapport mail, path ou l'on va copier le report
html_report_path="/tmp";
#html_report_path="/var/www/monsite.com";
 
############################################################
# Infos relatives a votre BDD pour aller recuperer les urls
############################################################
# Host Mysql
mysql_host="localhost"
# User Mysql
mysql_user="my_user"
# Password Mysql
mysql_password="my_password"
# BDD Mysql
mysql_bdd="my_bdd"
# Table mysql
mysql_table="my_table"
# Champ contenant l'url
mysql_field="url"

Enfin pour le fonctionnement, vous disposez de 2 modes :
I – Lecture du fichier passé en paramètre :

./linkchecker.sh urls_file

Dans ce cas, votre fichier doit contenir une url par ligne
II – Verification des urls de votre BDD

./linkchecker

Ici le script va se débrouiller comme un grand pour checker a partir de votre BDD.
Dans tous les cas, n’oubliez surtout pas de modifier le fichier de configuration pour définir le mode de rapport souhaité (envoi d’un email ou copie du fichier dans un répertoire web [ou autre] ).

Maintenant le package All-in-one :

RDD linkchecker

Une réponse sur « Verifiez vos urls grace a linklint »

Mise à part le script formidable que tu nous donne, le top de cette source ce trouve dans le fichier de licence 🙂

Que du bonheur !

Sinon ta un souci sur les input des commentaires un padding-left 3px irait amplement 😉
merci

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *