[hosts] fusionner plusieurs fichiers
[hosts] fusionner plusieurs fichiers
Bonsoir
J'aimerais savoir sous linux s'il existe une commande permettant de fusionner plusieurs fichiers hosts et qui permet aussi d'éviter les doublons.
S'il existe un petit log le permettant je suis preneur.
Merci de votre aide
J'aimerais savoir sous linux s'il existe une commande permettant de fusionner plusieurs fichiers hosts et qui permet aussi d'éviter les doublons.
S'il existe un petit log le permettant je suis preneur.
Merci de votre aide
Re: [hosts] fusionner plusieurs fichiers
cela doit être possible en bash, genre
Code : Tout sélectionner
cat /etc/hosts autrefichierhost.txt |sort |uniq > /tmp/fichierhostnettoye.txt
Re: [hosts] fusionner plusieurs fichiers
Merci cela semble fonctionner.
Ce serait si quelqu'un a les compétences de faire un logiciel type hostmanager que l'on trouve sous windows et que j'utilisais : http://www.libellules.ch/dotclear/index ... ts-manager
Ce serait si quelqu'un a les compétences de faire un logiciel type hostmanager que l'on trouve sous windows et que j'utilisais : http://www.libellules.ch/dotclear/index ... ts-manager
Re: [hosts] fusionner plusieurs fichiers
http://forums.archlinux.fr/post35855.html#p35855
ça va chercher un fichier host sur le site: http://www.mvps.org/winhelp2002/hosts.htm
interface en zenity, il télécharge et il remplace. tu peux très bien l'améliorer.
ça va chercher un fichier host sur le site: http://www.mvps.org/winhelp2002/hosts.htm
interface en zenity, il télécharge et il remplace. tu peux très bien l'améliorer.
Dernière modification par wido le dim. 02 août 2009, 14:07, modifié 1 fois.
Re: [hosts] fusionner plusieurs fichiers
Merci pour ton script, vraiment sympa de ta part.
Cependant ce que j'aurais aimé c'est un script qui permet à partir d'une liste ou plusieurs listes téléchargées de pouvoir automatiser le fusionnage de ces listes dans le fichier /etc/hosts en gérant automatiquement les doublons.
Ton script remplace le fichier hosts originel par celui téléchargé ; il ne fusionne pas ensemble.
Merci encore de m'avoir proposer un début de solution.
Cependant ce que j'aurais aimé c'est un script qui permet à partir d'une liste ou plusieurs listes téléchargées de pouvoir automatiser le fusionnage de ces listes dans le fichier /etc/hosts en gérant automatiquement les doublons.
Ton script remplace le fichier hosts originel par celui téléchargé ; il ne fusionne pas ensemble.
Merci encore de m'avoir proposer un début de solution.
Re: [hosts] fusionner plusieurs fichiers
tu peux très bien le modifier pour tes besoins en ajoutant plusieurs sources et un coup de nettoyage et voilà c'est réglé, si tu as des sites concernant les hosts indique les moi 

Re: [hosts] fusionner plusieurs fichiers
Bonjour
Comme je suis incompétent dans ce domaine, je sollicite donc si tu le veux ton aide.
Donc j'aimerais à partir de ces 3 listes de hosts :
- http://kosvocore.free.fr/AdZHosts/
- http://www.mvps.org/winhelp2002/hosts.txt
- http://rlwpx.free.fr/WPFF/hosts.htm
(soit teléchargement auto dans un répetoire de mon choix ou soit télécharger manuellement)
un script qui fusionnerait ces trois listes tout en gérant les adresses qui font doublons et qui me l'écrirait dans le etc/hosts.
Merci
Comme je suis incompétent dans ce domaine, je sollicite donc si tu le veux ton aide.
Donc j'aimerais à partir de ces 3 listes de hosts :
- http://kosvocore.free.fr/AdZHosts/
- http://www.mvps.org/winhelp2002/hosts.txt
- http://rlwpx.free.fr/WPFF/hosts.htm
(soit teléchargement auto dans un répetoire de mon choix ou soit télécharger manuellement)
un script qui fusionnerait ces trois listes tout en gérant les adresses qui font doublons et qui me l'écrirait dans le etc/hosts.
Merci
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: [hosts] fusionner plusieurs fichiers
Elles te servent à quoi ces listes de hosts ?
Re: [hosts] fusionner plusieurs fichiers
quelques questions :
- ce genre de listes n'est-il pas plus adapté à windows, qui se récupère facilement des virus qui vont faire des connexions automatiques sur ce type de sites ? (je vois mal un logiciel type "Adult Content Dialer" qui s'installe sur mon système linux)
- ne vaut-il pas mieux laisser gérer des listes anti pub par un module type adblock plus ? (même si cela ne fonctionne qu'avec firefox et pas konqueror, epiphany etc)
- blinder le /etc/hosts de sites merdiques à éviter, mais que l'on risque de rencontrer très peu sous linux dans les faits, ne risque-t-il pas au contraire de ralentir la navigation sur internet ? (puisque le système se réfère à ce fichier pour faire les résolutions DNS)
je vois par exemple que http://www.mvps.org/winhelp2002/hosts.txt fait plus de 16000 lignes alors cela me semble peu rationnel de le rajouter sur un système unix.
À la rigueur, je préfère cibler les sites que je ne veux pas voir, mais ne pas mettre n'importe quoi dans le hosts pour autant.
Par exemple j'ai rajouté cela dans mon /etc/hosts :
- ce genre de listes n'est-il pas plus adapté à windows, qui se récupère facilement des virus qui vont faire des connexions automatiques sur ce type de sites ? (je vois mal un logiciel type "Adult Content Dialer" qui s'installe sur mon système linux)
- ne vaut-il pas mieux laisser gérer des listes anti pub par un module type adblock plus ? (même si cela ne fonctionne qu'avec firefox et pas konqueror, epiphany etc)
- blinder le /etc/hosts de sites merdiques à éviter, mais que l'on risque de rencontrer très peu sous linux dans les faits, ne risque-t-il pas au contraire de ralentir la navigation sur internet ? (puisque le système se réfère à ce fichier pour faire les résolutions DNS)
je vois par exemple que http://www.mvps.org/winhelp2002/hosts.txt fait plus de 16000 lignes alors cela me semble peu rationnel de le rajouter sur un système unix.
À la rigueur, je préfère cibler les sites que je ne veux pas voir, mais ne pas mettre n'importe quoi dans le hosts pour autant.
Par exemple j'ai rajouté cela dans mon /etc/hosts :
Code : Tout sélectionner
127.0.0.1 pagead2.googlesyndication.com googlesyndication.com
127.0.0.1 rss.lefigaro.fr
127.0.0.1 lefigaro.fr
127.0.0.1 trax.motion-twin.com
127.0.0.1 experts-exchange.com
127.0.0.1 www.experts-exchange.com
Re: [hosts] fusionner plusieurs fichiers
Yo ! Salut, les jeunes.
Je viens de recevoir un pager comme quoi vous désirez une solution pour fusionner des fichiers hosts. J'ai ça.
Tout d'abord j'utilise adsuck (je ne suis plus sous arch) et une liste de filtres avec des expressions régulières (son nom /var/adsuck/filter). Je réalise la fusion avec l'aide d'un script lua qui utilise lrexlib.
Le script, hosts.lua, est pour un usage purement interne, il n'est donc peut-être pas très beau. On dira ici qu'il est sous GPLv3, ça vous va ?
Je ne mets pas les entêtes kivonbiens.
Il prend en compte le fichier d'expressions régulières de adsuck, nettoie les entrées qui correspondent, ce afin d'alléger le fichier, et ressort tout trié sous la forme "0.0.0.0 baddomain.com".
mynetwork contient la liste des références fixes, les machines du réseau par exemple.
Pour l'utiliser : lua hosts.lua hosts1 hosts2 hosts3 .... Il génère le fichier hosts tout seul.
J'ai aussi un script moins évolué qui va extraire les noms de domaines filtrés par adblock+ dans le fichier pattern.ini du profil firefox. Il est rudimentaire et sous GPLv3 aussi.
Voilà.
Pour répondre aux question de farvardin, non ça ne ralenti pas et oui c'est utile car on évite de faire des requêtes inutiles sur tout ce qu'adblock ne connaît pas.. Et comme c'est généralisé à la machine, rien ne va sortir de notre réseau peu importe le programme utilisé, ce n'est pas limité à firefox. Puis si on installe ça sur une machine avec un proxy, ça roulaiz la maman ourse.
Je passerai pour voir les questions sur le script.
Je viens de recevoir un pager comme quoi vous désirez une solution pour fusionner des fichiers hosts. J'ai ça.
Tout d'abord j'utilise adsuck (je ne suis plus sous arch) et une liste de filtres avec des expressions régulières (son nom /var/adsuck/filter). Je réalise la fusion avec l'aide d'un script lua qui utilise lrexlib.
Code : Tout sélectionner
#!/usr/bin/lua
require "rex_posix"
domains = {}
local entry_duplicates = 0
local entry_count = 0
local entry_managed = 0
local entry_blacklisted = 0
local i
mynetwork=[[
127.0.0.1 localhost
192.168.0.1 routeur
192.168.0.69 patator
---- antipub ----
]]
blacklist = {}
function init_blacklist()
for i in io.lines("/var/adsuck/filter") do
if string.sub(i, 1, 1) ~= "#" then
print("blacklist: adding "..i)
table.insert(blacklist, rex_posix.new(i))
end
end
end
function black_listed(host)
if host == "localhost" then return 1 end
local i
for _,i in ipairs(blacklist) do
if i:find(host) ~= nil then
--print(i:find(host), host)
return true
end
end
return false
end
function read_hostsfile(filename)
print("reading "..filename)
for i in io.lines(filename) do
entry_count = entry_count + 1
for host in string.gmatch(i, "127.0.0.1%s+([%w%p]+)") do
if domains[host] == nil then
entry_managed = entry_managed + 1
if not black_listed(host) then
domains[host] = 1
else
entry_blacklisted = entry_blacklisted + 1
end
else
entry_duplicates = entry_duplicates + 1
end
end
end
end
function write_hosts()
local h = {}
local i
for i in pairs(domains) do
table.insert(h,i)
end
table.sort(h)
local f = io.open("hosts","w")
f:write(mynetwork)
for _,i in ipairs(h) do
f:write("0.0.0.0 "..i.."\n")
end
f:close()
end
if #arg <= 0 then
print("lua hosts.lua hosts1 hosts2 hosts3 ...")
os.exit(1)
end
init_blacklist()
for i=1,#arg do
read_hostsfile (arg[i])
end
print("Lines found : ".. entry_count)
print(" Managed : ".. entry_managed)
print(" Duplicates : ".. entry_duplicates)
print(" Blacklisted: ".. entry_blacklisted)
write_hosts()

Il prend en compte le fichier d'expressions régulières de adsuck, nettoie les entrées qui correspondent, ce afin d'alléger le fichier, et ressort tout trié sous la forme "0.0.0.0 baddomain.com".
mynetwork contient la liste des références fixes, les machines du réseau par exemple.
Pour l'utiliser : lua hosts.lua hosts1 hosts2 hosts3 .... Il génère le fichier hosts tout seul.
J'ai aussi un script moins évolué qui va extraire les noms de domaines filtrés par adblock+ dans le fichier pattern.ini du profil firefox. Il est rudimentaire et sous GPLv3 aussi.
Code : Tout sélectionner
#!/usr/bin/lua
require "rex_posix"
local count = 0
local i
blacklist = {}
function init_blacklist()
for i in io.lines("/var/adsuck/filter") do
if string.sub(i, 1, 1) ~= "#" then
table.insert(blacklist, rex_posix.new(i))
end
end
end
init_blacklist()
print ("####################")
print ("# Addblock domains #")
print ("####################")
for line in io.lines("patterns.ini") do
if string.sub(line, 1, 1) == "." and string.sub(line, -1) == "/" then
domain = string.sub(line,2,-2)
if not string.find(domain, "/", 1,1) then
blacklisted=false
for _,i in ipairs(blacklist) do
if i:find(domain) ~= nil then
blacklisted=true
break
end
end
if not blacklisted then
print(domain)
count = count + 1
end
end
end
end
print("# Count "..count)
Pour répondre aux question de farvardin, non ça ne ralenti pas et oui c'est utile car on évite de faire des requêtes inutiles sur tout ce qu'adblock ne connaît pas.. Et comme c'est généralisé à la machine, rien ne va sortir de notre réseau peu importe le programme utilisé, ce n'est pas limité à firefox. Puis si on installe ça sur une machine avec un proxy, ça roulaiz la maman ourse.
Je passerai pour voir les questions sur le script.
Anarchy for the triple A.
Re: [hosts] fusionner plusieurs fichiers
l'avantage du fichiers aussi gros soit-il est qu'il n'alourdit pas la navigation et permet de l'utiliser sous differents navigateurs.
Sous firefox je n'utilise plus adblock plus qui me prenait de le ram pour rien et pour avoir utiliser les deux le fichiers hosts me semble plus efficace. Couplé à privoxy plus noscript, navigation tranquille.
D'où l'intéret d'avoir un log tel hotsmanager pour pouvoir gerer les listes hosts facilement.
Mimas je ne voit pas ton script hosts.lua ?
Merci
Sous firefox je n'utilise plus adblock plus qui me prenait de le ram pour rien et pour avoir utiliser les deux le fichiers hosts me semble plus efficace. Couplé à privoxy plus noscript, navigation tranquille.
D'où l'intéret d'avoir un log tel hotsmanager pour pouvoir gerer les listes hosts facilement.
Mimas je ne voit pas ton script hosts.lua ?
Merci
Re: [hosts] fusionner plusieurs fichiers
Le premier dans la section code.
Le problème est que vous n'avez pas lrexlib dans archlinux (j'ai dû le compilé sur ma distro aussi). Si tu veux utiliser le script il te faut supprimer la ligne 'require "rex_posix"', garder la première ligne et la dernière ligne de la fonction black_listed() (celles avec localhost/return false ), puis vider la fonction init_blacklist().
Le problème est que vous n'avez pas lrexlib dans archlinux (j'ai dû le compilé sur ma distro aussi). Si tu veux utiliser le script il te faut supprimer la ligne 'require "rex_posix"', garder la première ligne et la dernière ligne de la fonction black_listed() (celles avec localhost/return false ), puis vider la fonction init_blacklist().
Anarchy for the triple A.
Re: [hosts] fusionner plusieurs fichiers
mise à jour du script: http://pastebin.archlinux.fr/pastebin.php?dl=355114
on se retrouve avec un fichier de 23Mo
tout ce qui ne commence pas par 127.0.0.1 sera effacé.
ça nettoie de trop je ne peux même plus accéder au site:
http://www.chauffeurdebuzz.com/
et mes popotins de stars 
on se retrouve avec un fichier de 23Mo
tout ce qui ne commence pas par 127.0.0.1 sera effacé.
ça nettoie de trop je ne peux même plus accéder au site:
http://www.chauffeurdebuzz.com/


Re: [hosts] fusionner plusieurs fichiers
Merci pour ton scrip mais lorsque je le lance il télécharge bien les fichiers hosts puis il s'arrete à la fin du dernier téléchargement ???
C'est vrai que cela fait un gros fichier qui est parfois restrectif ; il suffit simplement de commenter les lignes des adresses bloquées avec un petit #.
Merci
C'est vrai que cela fait un gros fichier qui est parfois restrectif ; il suffit simplement de commenter les lignes des adresses bloquées avec un petit #.
Merci
- marc[i1]
- Maître du Kyudo
- Messages : 1753
- Inscription : ven. 27 oct. 2006, 10:48
- Localisation : Nantes (44)
Re: [hosts] fusionner plusieurs fichiers
ton script souffre d’un défaut … tu le lance en root !wido a écrit :mise à jour du script: http://pastebin.archlinux.fr/pastebin.php?dl=355114
Toute la partie initiale ne nécessite pas de droit root ( téléchargement, décompression, trie, filtre ). Seule la mise en place dans /etc/hosts demande à être root.
Maintenant je te laisse te creuser la tête

Ne vous emmerdez plus, emmerdez les autres.
- chipster
- Maître du Kyudo
- Messages : 2063
- Inscription : ven. 11 août 2006, 22:25
- Localisation : Saint-Étienne (42)
- Contact :
Re: [hosts] fusionner plusieurs fichiers
Au moins c'est demandé une fois pour toute 
Attention quand même de laisser en dur dans le forum ce que vous faites car le wiki est vidé de temps à autres à cause des spammers fous. Même si vous cochez la case concerver tout le temps, ... il sera effacé 



Re: [hosts] fusionner plusieurs fichiers
Code : Tout sélectionner
#!/bin/sh
# Mise à jour du fichier hosts
# /etc/hosts
#___________________________
#sur différents sites:
# http://www.mvps.org/winhelp2002/
# http://rlwpx.free.fr
# http://kosvocore.free.fr/
#___________________________
#Mise à jour le 02-09-09
lancement ()
{
rm -R /tmp/megahost
mkdir /tmp/megahost
dossier=/tmp/megahost
echo "127.0.0.1 localhost.localdomain localhost desktop" > $dossier/hosts_entete
# http://www.mvps.org/winhelp2002/
wget -c http://www.mvps.org/winhelp2002/hosts.txt -O $dossier/hosts.txt
# http://rlwpx.free.fr
wget -c http://rlwpx.free.fr/WPFF/hosts.7z -O $dossier/hosts.7z
# http://kosvocore.free.fr/
wget -c http://kosvocore.free.fr/AdZHosts/AdZHosts.zip -O $dossier/AdZHosts.zip
echo "téléchargement fini"
mv $dossier/hosts.txt $dossier/mvps
cd $dossier/
7z e $dossier/hosts.7z
cat $dossier/Hosts.blc $dossier/Hosts.pub $dossier/Hosts.rsk $dossier/Hosts.sex $dossier/Hosts.trc $dossier/Hosts.web | sort | uniq > $dossier/rlwpx
unzip -e $dossier/AdZHosts.zip
# On regroupe les différents fichiers hosts:
echo "Tri final - démarrage"
cat $dossier/mvps $dossier/rlwpx $dossier/AdZHosts/HOSTS | sort | uniq > $dossier/hosts1
#nettoyage tout ce qui ne commence pas par 127.0.0.1 sera effacé:
sed -n -i '/127.0.0.1/p' "$dossier/hosts1"
cat $dossier/hosts_entete $dossier/hosts1 > $dossier/hosts
gksu cp $dossier/hosts /etc/hosts
}
(echo ""; lancement) | zenity --progress --title "Hosts" --text="Téléchargement et installation en cours" --pulsate
## Si on clic sur Annuler...
if [ $? -ne 0 ]
then
exit 0
fi
zenity --question --title "Hosts" --text "$@ \
script terminé ."
## Si on clic sur Annuler...
if [ $? -ne 0 ]
then
exit 0
fi
Re: [hosts] fusionner plusieurs fichiers
Bonjour et merci pour la mise à jour de ton script qui fonctionne.
J'aurais une petite question : les adresses que le hosts bloquent et dont je veux y aller je les commente par un # ce qui me permet de m'en souvenir.
Hors lors de la mise à jour par le script ces commentaires sont effacés.
Merci
J'aurais une petite question : les adresses que le hosts bloquent et dont je veux y aller je les commente par un # ce qui me permet de m'en souvenir.
Hors lors de la mise à jour par le script ces commentaires sont effacés.
Merci
Re: [hosts] fusionner plusieurs fichiers
tu peux très bien l'éditer après la mise à jour,
ou autre possibilité tu les ajoutes dans un fichier , et tu l'intègres dans le script
à la ligne:
si par exemple tu le mets sur dans ton home:
comme cela il sera ajouté dans le fichier final.
la fonction sed ... sert uniquement à réduire la taille du fichier.
si tu n'as pas envie de ce traitement , tu peux très bien le commenter.
par
Code : Tout sélectionner
gksu gedit /etc/hosts
à la ligne:
Code : Tout sélectionner
cat $dossier/hosts_entete $dossier/hosts1 > $dossier/hosts
Code : Tout sélectionner
cat $dossier/hosts_entete $dossier/hosts1 /home/astreides/mon_host.txt > $dossier/hosts
la fonction sed ... sert uniquement à réduire la taille du fichier.
si tu n'as pas envie de ce traitement , tu peux très bien le commenter.
Code : Tout sélectionner
sed -n -i '/127.0.0.1/p' "$dossier/hosts1"
Code : Tout sélectionner
#sed -n -i '/127.0.0.1/p' "$dossier/hosts1"
- mélodie
- Maître du Kyudo
- Messages : 2784
- Inscription : lun. 30 oct. 2006, 02:06
- Localisation : Pyrénées
Re: [hosts] fusionner plusieurs fichiers
chipster a écrit :Attention quand même de laisser en dur dans le forum ce que vous faites car le wiki est vidé de temps à autres à cause des spammers fous. Même si vous cochez la case concerver tout le temps, ... il sera effacé


Le *pastebin*...