voila le script, n'hésitez pas à me signaler vos améliorations/changements!
cd /tmp
wget --directory-prefix=/tmp --referer=http://www.bashfr.org/ http://www.bashfr.org/bashfr_fortunes
grep -v "http://bashfr.org/" /tmp/bashfr_fortunes > /tmp/bash_fortunes2
iconv -f iso-8859-1 -t utf8 /tmp/bash_fortunes2 > /tmp/bashfr_fortunes
rm /tmp/bash_fortunes2
strfile -r /tmp/bashfr_fortunes /tmp/bashfr_fortunes.dat
cp /tmp/bashfr_fortunes.dat /usr/share/fortune/bashfr_fortunes.dat
cp /tmp/bashfr_fortunes /usr/share/fortune/bashfr_fortunes
wget --directory-prefix=/tmp --referer=http://sam.linuxfr.org/ http://sam.linuxfr.org/fortunes.txt
mv /tmp/fortunes.txt /tmp/linuxfr_fortunes
strfile -r /tmp/linuxfr_fortunes /tmp/linuxfr_fortunes.dat
cp /tmp/linuxfr_fortunes /usr/share/fortune/linuxfr_fortunes
cp /tmp/linuxfr_fortunes.dat /usr/share/fortune/linuxfr_fortunes.dat
rm /tmp/bashfr* /tmp/linuxfr*
# Plus concis
Posté par Nicolas Aupetit (site web personnel) . Évalué à 2.
#!/bin/bash
wget --referer=http://www.bashfr.org/ http://www.bashfr.org/bashfr_fortunes -o /dev/null -O - | grep -v "http://bashfr.org/" | iconv -f iso-8859-1 -t utf8 > /usr/share/fortune/bashfr_fortunes && strfile -s -r /usr/share/fortune/bashfr_fortunes /usr/share/fortune/bashfr_fortunes.dat
wget --referer=http://sam.linuxfr.org/ http://sam.linuxfr.org/fortunes.txt -o /dev/null -O - | iconv -f iso-8859-1 -t utf8 > /usr/share/fortune/linuxfr_fortunes && strfile -s -r /usr/share/fortune/linuxfr_fortunes /usr/share/fortune/linuxfr_fortunes.dat
[^] # Re: Plus concis
Posté par Pol . Évalué à 1.
J'ai essayé de modifier ton script de la même manière, c'est à dire, en supprimant iconv mais impossible de trouver une manière sans utiliser de fichiers temporaires...
A propos, petite question dis moi comment trouver le charset d'un fichier ?
MErci!
[^] # Re: Plus concis
Posté par Nicolas Aupetit (site web personnel) . Évalué à 1.
Ce qui donne donc pour le 2ème :
wget --referer=http://sam.linuxfr.org/ http://sam.linuxfr.org/fortunes.txt -o /dev/null -O /usr/share/fortune/linuxfr_fortunes && strfile -s -r /usr/share/fortune/linuxfr_fortunes /usr/share/fortune/linuxfr_fortunes.dat
Pour ce qui est de trouver le charset d'un fichier, la commande file peut parfois rendre service, toutefois, elle n'est pas garantie :)
En effet, à moins d'une déclaration explicite (comme en XHTML par exemple avec l'encoding déclaré en début de document), l'interprétation du charset dépend de la facon dont chacun s'attend à le trouver. Ce qui peut conduire à des erreurs d'interprétation lorsque le programme essaye de "deviner" l'encodage utilisé (voir à ce sujet le "bug" notepad signalé dans http://linuxfr.org/~dup/21898.html )
[^] # Re: Plus concis
Posté par Pol . Évalué à 1.
ca marche nickel!
[^] # moins charger le serveur
Posté par symoon . Évalué à 2.
| strfile -s -r - /usr/share/fortune/bashfr_fortunes.dat
Autres idées pour éviter de surcharger inutilement le serveur pour télécharger un fichier n'ayant pas été modifié :
- si on suppose qu'il n'y a que de ajouts en fin de fichier, utiliser wget -c, ça ne télécharger que les nouvelles lignes
- sinon, utiliser l'option -S de wget pour récupérer uniquement les entêtes HTTP et ainsi la date de dernière modification :
par exemple pour bashfr :
4 Last-Modified: Mon, 03 Jul 2006 21:50:14 GMT
et se baser sur cette date pour décider de télécharger ou pas le fichier.
Je n'ai pas trouvé d'option dans wget pour comparer cette date fournie par le serveur http avec la date du fichier local et décider en fonction => il faut le faire soi-même
[^] # Re: moins charger le serveur
Posté par Nicolas Aupetit (site web personnel) . Évalué à 1.
Non, strfile est tout pourri, car il n'accepte pas de lire sur stdin.
Ou sinon, en contournant le bug de wget lors de l'utilisation simultanée de -N et -O, ca donnerait pour le script :
Ainsi (on peut le voir en enlevant les -o /dev/null et en lançant plusieurs fois de suite le script), les fichiers ne sont récupérés que s'ils ont changé sur le site ==> Moins de charge :)
# sans fichier temporaire saymieu
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: sans fichier temporaire saymieu
Posté par Pol . Évalué à 3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.