Vous êtes à :
  1. Accueil > 
  2. Nos techniques > 
  3. Quelques scripts
Passer le menu Aller au pied de page

Licences Joueb English version Accessibilité

Quelques scripts.

Page méchamment en travaux !

 

Compiler du php vers du html

À quoi sert ce script ? Si vous n’employez php que pour générer des pages statiques, il ne sert à rien de les générer à chaque requête. Ce script enregistre le rendu de votre page index.php, teste si un fichier index.html existe déjà dans le même répertoire. Si oui, alors il teste s’ils sont identiques ou non. En fonction, il crée, écrase ou efface le fichier index.html.

#!/bin/bash

chemin=`pwd`
wget http://localhost${chemin:8}/index.php -q -O /tmp/index.html
 if [ $? -ne 0 ]
# Si la commande wget a renvoyé une erreur   …
	    then 
		echo "Erreur au téléchargement de http://localhost/${chemin:8}/index.html."
	    else 
# Si la commande wget n’a pas renvoyé d’erreur   …
  sed -i '1s|^|<!--\n 	Bienvenue, lecteur-trice de code source !\n\n\n	Comment est fabriqué ce site ?  \n		— https://micr0lab.org/tech/ \n		— https://micr0lab.org/rouage/ \n		— https://micr0lab.org/humains.txt\n\n\n	Licence : \n		Code le plus souvent sous licence art libre (artlibre.org), voir https://micr0lab.org/rouage/droits/#d_site pour plus d’infos.\n\n\n 	Contact : \n		Voir https://micr0lab.org/contact/\n\n\n **********************\n *	=======> Puisque tu es là <======\n *	Tu aimes le code?\n *		Tu modèles les octets ?\n * 			Les arts numériques de micr0lab (https://micr0lab.org/arts_numeriques/) sont là !\n *	======> Proposes-y tes projets ! <======\n **********************\n -->|' /tmp/index.html 
# On marque le fichier obtenu.
	    tidy -config /donnees/micr0lab/tech/scripts/config-tidy -m /tmp/index.html
		if [ -f index.html ]
# On regarde si le dossier dans lequel se trouvait le fichier index.php actuellement compilé contenait déjà un fichier index.html.
		then
		    DIFF=$(diff $chemin/index.html /tmp/index.html)
#index.html existe déjà, on compare la version obtenue et la version actuelle.
 		    if [ "$DIFF" != "" ]
 		    then
# Si les fichiers sont différents…
			mv /tmp/index.html index.html
			echo "Index.html écrasé."
# On stocke dans le tableau l’adresse de la page écrasée et on écrase le fichier index.html avec la version générée par wget.
 		    else
# Si le fichier index.html qui existait déjà et le fichier index.html obtenu avec wget sont identiques  …
			echo "Index.html identique."
			rm /tmp/index.html
# Alors on stocke dans le tableau l’adresse de la page ignorée et on efface le fichier généré par wget.
		    fi
		else
# Le fichier index.html n’existait pas.
		    mv /tmp/index.html index.html
		    echo "Index.html crée."
# On stocke l’adresse du fichier crée dans le tableau et on déplace la version fabriquée par wget dans le dossier
		fi
	    fi

Télécharger ce script.

Cette mise en bouche prépare surtout à la compréhension du script suivant, qui compile tout votre site en un coup.

 

Compiler du php vers du html

L’utilité de ce script est détaillée dans la rubrique php, nous n’évoquons ici que l’aspect technique de la chose.

#!/bin/bash

# php_vers_html version 1.3
# Par le ouebmestre de micr0lab
# Licence art libre ( http://artlibre.org/ ) : vous êtes libres de copier,
# diffuser et transformer librement les oeuvres dans le respect des droits de
# l'auteur.
# Ce script «  compile » votre site en php vers un site en html. Bien
# évidemment, cela suppose que vous n’employez php que pour gérer des inclusions
# et des calculs, et non pas pour rendre votre site interactif, auquel cas la
# compilation vers du html casserait l’interactivité de votre site. Il permets
# d’effectuer une fois pour toute les calculs sur votre ordinateur, plutôt que de 
# les faire faire à votre serveur à chaque requête.


# Ce script est fourni tel quel, il est préférable de comprendre son
# fonctionnement avant de chercher à l’employer, le ouebmestre de micr0lab ne
# serait être responsable d'un quelconque effet indésirable engendré par l'emploi 
# de ce script.

# Votre attention est notamment attirée sur le fait que si un fichier index.html
# existait déjà dans un dossier où se trouve un fichier index.php, et que ce
# fichier est différent du rendu statique obtenu à partir du fichier index.php,
# alors ce fichier index.html sera écrasé.

# Pour que ce script soit utile, pensez à préciser dans le fichier .htaccess à
# la racine de votre site (sans le # le précédant) : 
# DirectoryIndex index.html index.php
# Ainsi, la page index.html sera servie par défaut, et si elle n’existe pas,
# alors sera affichée index.php.

# Bonne compilation !

# Changements avec la version 1 : 
# Désormais, les résultats des téléchargements, et la mise à jour ou non du
# fichier index.html ne sont plus affichées au fur et à mesure, mais stockées dans 
# des variables, triées, et affichées à la fin.


#####################
# À personnaliser      ! #
####################

# L’adresse locale de votre site.
path=http://localhost/micr0lab/
# Le chemin du dossier où se trouve votre site.
dossier=/donnees/micr0lab/sites/micr0lab/

# Ici, on suppose que votre site est constitué de dossiers qui contiennent
# chacun au plus une page en php à compiler.
# On suppose que cette page se nomme index.php, elle est ainsi affichée par
# défaut lorsque l’on entre simplement le chemin du dossier.

# On commmence fixer comme série de paramètres la liste des fichiers php à
# compiler : 
#set `find $dossier -name "index.php" -o -path "*/sites/*" -prune -type f`
# Ici, on liste tous les fichiers index.php de tous les dossiers contenus dans
# le chemin $dossier, à l’exception des dossiers qui se trouvent dans le dossier
# "sites".
# Bogue : le fichier /sites/index.php est pris en compte. Ça ne pose pas de
# soucis, mais c’est curieux. Si on veut l’exclure, il suffit de préciser entre «
# -type f  » et « `  » ce qui suit : «  ! -name index.html  ».

# Pour lister simplement tous fichiers index.php de tous les dossiers, faîtes
# set `find $dossier -name "index.php"`

#############################
#Fin de la personnalisation.#
#############################


# Quelques variables (tableaux et compteurs) pour stocker respectivement…
# Les erreurs au téléchargement
declare -a erreurs_telechargement
declare -i compt_erreurs_telechargement=0
# Les fichiers crées
declare -a nouveaux_fichiers
declare -i compt_nouveaux_fichiers=0
# Les fichiers écrasés
declare -a fichiers_ecrases
declare -i compt_fichiers_ecrases=0
# Les fichiers ignorés
declare -a fichiers_ignores
declare -i compt_fichiers_ignores=0
#Pour dater la compilation
jour=$(date +%D)
heure=$(date +%T)

echo $dossier


for fich in $(find $dossier -name "index.php");
# Pour chacun des fichiers index.php trouvé…
do
    echo "En train de traiter $path${fich:${#dossier}}"
    wget $path${fich:${#dossier}} -q -O /tmp/index.html
# On enregistre une version html que l’on sauvegarde dans /tmp/index.html à l’aide de wget.
	    if [ $? -ne 0 ]
# Si la commande wget a renvoyé une erreur   …
	    then 
		let "compt_erreurs_telechargement= $compt_erreurs_telechargement + 1"
		erreurs_telechargement[$compt_erreurs_telechargement]=$path${fich:${#dossier}:-3}html
		rm /tmp/index.html
# On stocke dans le tableau l'adresse de la page pour laquelle il y a eu une erreur et on supprime le fichier /tmp/index.html.
	    else 
# Si la commande wget n’a pas renvoyé d’erreur   …
  sed -i '1s|^|<!--\n 	Bienvenue, lecteur-trice de code source !\n\n\n	Comment est fabriqué ce site ?  \n		— https://micr0lab.org/tech/ \n		— https://micr0lab.org/rouage/ \n		— https://micr0lab.org/humains.txt\n\n\n	Licence : \n		Code le plus souvent sous licence art libre (artlibre.org), voir https://micr0lab.org/rouage/droits/#d_site pour plus d’infos.\n\n\n 	Contact : \n		Voir https://micr0lab.org/contact/\n\n\n **********************\n *	=======> Puisque tu es là <======\n *	Tu aimes le code?\n *		Tu modèles les octets ?\n * 			Les arts numériques de micr0lab (https://micr0lab.org/arts_numeriques/) sont là !\n *	======> Proposes-y tes projets ! <======\n **********************\n -->|' /tmp/index.html 
# On marque le fichier obtenu.
	    tidy -config /donnees/micr0lab/scripts/compile_php/config-tidy -m /tmp/index.html
		if [ -f ${fich:0:-10}/index.html ]
# On regarde si le dossier dans lequel se trouvait le fichier index.php actuellement compilé contenait déjà un fichier index.html.
		then
		    DIFF=$(diff ${fich:0:-10}/index.html /tmp/index.html)
#index.html existe déjà, on compare la version obtenue et la version actuelle.
 		    if [ "$DIFF" != "" ]
 		    then
# Si les fichiers sont différents…
			let "compt_fichiers_ecrases= $compt_fichiers_ecrases + 1"
			fichiers_ecrases[$compt_fichiers_ecrases]=$path${fich:${#dossier}:-3}html
			mv /tmp/index.html ${fich:0:-10}/index.html
			#sed -i "/<head>/ i <!-- Version compilée en html le $jour vers $heure selon la méthode décrite à http://micr0lab.org/tech/scripts/#php_vers_html. -->\n" ${fich:0:-10}/index.html
# On stocke dans le tableau l’adresse de la page écrasée et on écrase le fichier index.html avec la version générée par wget.
 		    else
# Si le fichier index.html qui existait déjà et le fichier index.html obtenu avec wget sont identiques  …
			let "compt_fichiers_ignores= $compt_fichiers_ignores + 1"
			fichiers_ignores[$compt_fichiers_ignores]=$path${fich:${#dossier}:-3}html
			rm /tmp/index.html
# Alors on stocke dans le tableau l’adresse de la page ignorée et on efface le fichier généré par wget.
		    fi
		else
# Le fichier index.html n’existait pas.
		    let "compt_nouveaux_fichiers= $compt_nouveaux_fichiers + 1"
		    nouveaux_fichiers[$compt_nouveaux_fichiers]=$path${fich:${#dossier}:-3}html
		    mv /tmp/index.html ${fich:0:-10}/index.html
		    sed -i "/<head>/ i <!-- Version compilée en html le $jour vers $heure selon la méthode décrite à http://micr0lab.org/tech/scripts/#php_vers_html. -->" ${fich:0:-10}/index.html
# On stocke l’adresse du fichier crée dans le tableau et on déplace la version fabriquée par wget dans le dossier
		fi
	    fi
done


#####
# Désormais, on affiche les résultats.
echo -e "\n"

# Pour les pages laissées intactes :
if [ "$compt_fichiers_ignores" != "0" ] 
then
    echo -e "********************* \n* Ont été ignorés : *\n*********************"
    while [ "$compt_fichiers_ignores" != "0" ]
    do 
	echo ${fichiers_ignores[$compt_fichiers_ignores]}
	let "compt_fichiers_ignores = $compt_fichiers_ignores -1"
    done
    echo -e "\n"
else
    echo -e "*********************\n* Tous les fichiers ont été modifiées ou crées ! *\n*********************\n"
fi

#Pour les pages en erreurs : 
if [ "$compt_erreurs_telechargement" != "0" ] 
then
    echo -e "****************************** \n* Erreur au téléchargement : *\n******************************"
    while [ "$compt_erreurs_telechargement" != "0" ]
    do 
	echo ${erreurs_telechargement[$compt_erreurs_telechargement]}
	let "compt_erreurs_telechargement = $compt_erreurs_telechargement -1"
    done
    echo -e "\n\n"
else
    echo -e "************************************\n* Aucune erreur au téléchargement. *\n************************************\n\n"
fi

# Pour les pages créées :
if [ "$compt_nouveaux_fichiers" != "0" ] 
then
    echo -e "********************* \n Ont été crées :\n*********************"
    while [ "$compt_nouveaux_fichiers" != "0" ]
    do 
	echo ${nouveaux_fichiers[$compt_nouveaux_fichiers]}
	let "compt_nouveaux_fichiers = $compt_nouveaux_fichiers -1"
    done
    echo -e "\n\n"
else
    echo -e "*******************************\n* Aucun nouveau fichier crée. *\n*******************************\n\n"
fi 

# Pour les pages écrasées :
if [ "$compt_fichiers_ecrases" != "0" ] 
then
    echo -e "**********************\n* Ont été écrasées : *\n**********************"
    while [ "$compt_fichiers_ecrases" != "0" ]
    do 
	echo ${fichiers_ecrases[$compt_fichiers_ecrases]}
	let "compt_fichiers_ecrases = $compt_fichiers_ecrases -1"
    done
    echo -e "\n\n"
else
    echo -e "*************************\n* Aucun fichier écrasé. *\n*************************\n\n"
fi 

### Fin de l’affichage des résultats.

Télécharger ce script.

 

Valider un site d’un script

Ce script sert à valider tout un site avec le validateur du W3C couplé au validateur validator.nu installés en local. L’utilité d’avoir un site conforme à ces recommandations et la façon d’installer ces validateurs sont expliqués ailleurs.

#!/bin/bash

# L’adresse locale de votre site.
path=http://localhost/micr0lab/
#rouage/
# Le chemin du dossier où se trouve votre site.
dossier=/donnees/micr0lab/
#rouage/

set `find $dossier -name "index.html" -o -path "*/sites/*" -prune -type f`


for fich
# Pour chacun des fichiers index.html trouvé…
do
    echo "En train de traiter $path${fich:${#dossier}}"
    java -jar /donnees/0101/logiciels/vnu/vnu.jar -format text --verbose $path${fich:${#dossier}}# >> /donnees/doc_micr0lab/log/valide.txt  2>&1
done

 

Télécharger ce script.

 

Contact :

Contact Plan Lettre F.a.q. C.G.U.