[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: script bash pour unbound



Le 18/08/18 à 21:48, Bernard Schoenacker <bernard.schoenacker@free.fr> a
écrit :

> bonjour,
> 
> j'ai pris ce script bash et je n'arrive pas à le déverminer:
> 
> https://blog.mirabellette.eu/index.php?article17/block-advertise-domain-name-with-unbound
> 
> voici le début qui pose problème :
> 
> ARRAY=
> $(https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts
> )

sur la page mentionnée y'a pas de $

> for i in "${ARRAY[@]}"

et du coup je comprend pas la ligne précédente, pourquoi un for sur un
tableau d'un seul élément ?

Pas testé, mais amha, virer do/done et remplacer le wget par

> do
>   wget -c  -O  w  "$i"

wget -c -O w
https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts


> 
>   grep -v " #\|<td>\|<p>\|<meta>\|<link>\|<title>\|href\|title=\|=\|<" w
> > adsList.txt rm -f w
>   dos2unix adsList.txt


ça peut se faire sans fichier intermediaire avec

wget -c -O - $url|grep -v "expression" > fichier

donc ici tu peux te contenter de ces 3 lignes, en remplaçant la 3e
par /etc/init, service ou systemctl suivant ta conf
(et mettre le path complet de adsList.txt pour pouvoir lancer le script de
n'importe où) :

url=https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts
wget -q -O - $url|sed -e '/^$/d; /#/d' > adsList.txt
# reste à relancer unbound qui lit ce adsList.txt


mais je crois qu'unbound ignore les lignes vides et celles qui commencent
par #, ton script devrait pouvoir se résumer à

url=https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts
wget -q -O /path/to/adsList.tmp $url \
  && [ -s /path/to/adsList.tmp ] \
  && mv /path/to/adsList.tmp /path/to/adsList.txt \
  && systemctl reload unbound \
  && echo "Liste actualisée et rechargée" \
  || echo "Un truc a foiré">&2

(l'enchaînement avec && est là au cas où le wget plante, pour ne pas risquer
d'écraser l'ancien txt avec un truc vide, le test -s passe si le fichier
n'est pas vide)


Une remarque au passage, je ne laisserais pas qqun d'externe définir
l'ip de localhost, ça me parait plus prudent d'ajouter un sed pour virer
les premières lignes, ou ne garder que celles qui commencent par 0.0.0.0,
en ajoutant si besoin un autre fichier txt pour unbound pour ces lignes
(mais je crois qu'unbound résoud déjà localhost avec sa conf par défaut).

wget -q -O - $url|sed -ne '/^0\.0\.0\.0/ p' > /path/to/adsList.tmp


Celui qui fournit la liste pourra toujours rediriger localhost vers 0.0.0.0
mais au moins ça n'ira pas ailleurs et je vais m'en apercevoir rapidement.

> 
> 
> merci pour le coup de puce
> 
> slt
> bernard
> 


-- 
Daniel

Travailler dur n'a jamais tué personne, mais pourquoi prendre le 
risque ?
Edgar Bergen


Reply to: