Page 2 sur 3

Publié : lun. 23 févr. 2009, 20:31
par wido
à chaque redémarrage le /tmp/ se vide, il n'y aura plus ce fichier hosts.txt, il faudrait le mettre ailleurs?

et le /etc/host est pris en compte de suite ou il faut à chaque fois réouvrir sa session?

Publié : lun. 23 févr. 2009, 20:56
par mimas
Le fichier est téléchargé dans /tmp puis son contenu est ajouté à /etc/hosts (le texte entre les deux EOT.

On se fiche donc du fichier temporaire dans /tmp une fois le script exécuté.

Publié : lun. 23 févr. 2009, 21:08
par wido
justement parce que j'obtiens:

Code : Tout sélectionner

[wido@desktop ~]$ cat /etc/hosts
127.0.0.1     localhost 
192.168.1.1   passerelle 
192.168.1.2   dinauzor 
# blabla en fonction du contenu du fichier hosts qu'on souhaite toujours avoir. 

##### L'antipub commence ###### 

EOT 

dos2unix /tmp/hosts.txt 

# On change les adresses 127.0.0.1 vers 0.0.0.0  
# et on évite de remettre une nouvelle adresse pour localhost 
cat /tmp/hosts.txt | sed "s#127\.0\.0\.1#0\.0\.0\.0#" | grep -v "localhost"  >> /etc/hosts

Publié : sam. 28 févr. 2009, 20:11
par mélodie
wido a écrit :justement parce que j'obtiens:

Code : Tout sélectionner

[wido@desktop ~]$ cat /etc/hosts
127.0.0.1     localhost 
192.168.1.1   passerelle 
192.168.1.2   dinauzor 
# blabla en fonction du contenu du fichier hosts qu'on souhaite toujours avoir. 

##### L'antipub commence ###### 

EOT 

dos2unix /tmp/hosts.txt 

# On change les adresses 127.0.0.1 vers 0.0.0.0  
# et on évite de remettre une nouvelle adresse pour localhost 
cat /tmp/hosts.txt | sed "s#127\.0\.0\.1#0\.0\.0\.0#" | grep -v "localhost"  >> /etc/hosts
Pour la partie avant "####L'antipub commence #### relis ça ?
127.0.0.1 localhost
192.168.1.1 passerelle
192.168.1.2 dinauzor
# blabla en fonction du contenu du fichier hosts qu'on souhaite toujours avoir.
y'a pas les hôtes passerelle et dinauzor chez toi, si ?

Par ailleurs vu la taille du fichier hosts.txt (et donc de ce qui est copié dans ton /etc/hosts) je te déconseille la commande "cat". :)

/EDIT : Je viens de l'essayer. J'ai remplacé la partie ci-dessus par mes hôtes, nommé le script hostsupdate et l'ai mis dans mon .local/bin, l'ai rendu exécutable (chmod a+x) et l'ai lancé : ./hostupdate : il m'a bien entendu rétorqué qu'il fallait être root, et que : sudo ./hostupdate, et enfin voici la différence avant/après:

Avant:
127.0.0.1 localhost
192.168.0.1 nom-de-ma-passerelle
192.168.0.2 squirrel
192.168.0.3 bidule
(...)
# *********************************************************#

# ------------ Updated: September-23-2008 -----------------#

# *********************************************************#

(...)
Après:
127.0.0.1 localhost
192.168.0.1 nom-de-ma-passerelle
192.168.0.2 squirrel
192.168.0.3 bidule
(...)
# *********************************************************#
# -------------- Updated: February-11-2009 -----------------#
# *********************************************************#

(...)

Publié : sam. 28 févr. 2009, 20:27
par mimas
wido a écrit :justement parce que j'obtiens...
C'est un problème très intéressant. Je ne vois aucune raison pour que ce script, une fois exécuté, donne ce résultat là à la place d'un fichier hosts valide.

Publié : sam. 28 févr. 2009, 21:01
par wido
le fichier /tmp/hosts est bien mis à jour mais ça ne modifie pas le /etc/hosts :cry:

Publié : sam. 28 févr. 2009, 21:14
par mélodie
wido a écrit :le fichier /tmp/hosts est bien mis à jour mais ça ne modifie pas le /etc/hosts :cry:
Salut,
Fais-nous un copié collé sur pastebin : de ton fichier /etc/hosts, et de ta version du script de mimas. Expliques-nous aussi de quelle manière tu t'y prends pour lancer le script de mimas.

Publié : sam. 28 févr. 2009, 21:31
par marc[i1]
10 balles que tu lances pas le script en root
:oops:

:lol:

Publié : sam. 28 févr. 2009, 21:55
par mélodie
marc[i1] a écrit :10 balles que tu lances pas le script en root
:oops: :lol:
Pas possible, c'est prévu dans le script. Par contre il n'est pas prévu d'y créer un fichier 'hosts' sous /tmp, mais un fichier /tmp/hosts.txt

Publié : sam. 28 févr. 2009, 23:24
par mimas
farvardin a écrit :par contre vu que c'est automatique, si par exemple un pirate arrive à hacker le site qui diffuse cette liste, et que je me retrouve avec des adresses bidons dans mon /etc/hosts (genre ubuntu.com à la place de archlinux.fr), c'est pas un peu risqué ?
Je n'avais pas pensé au risque de spoofing.

Maintenant il n'y a que les lignes contenant les adresses en 0.0.0.0 (les ex-127.0.0.1) et les commentaires qui sont copiées dans le fichiers hosts. Plus de spoofing possible, juste une possible mise en liste noire. Ce qui est à mon avis beaucoup moins grave.

Publié : dim. 01 mars 2009, 20:48
par wido
10 balles que tu lances pas le script en root
10 euros? ok pas de problème :lol:
je lance bien en root, je le lance via le script en root
sh host.sh

Pour mélodie je reprends exactement toutes les lignes de commandes du script de mimas

voici le pastbin de /etc/hosts:

Code : Tout sélectionner

http://pastebin.archlinux.fr/323106
Comment je fais:
-copie du script dans un fichier que je nomme hosts.sh, je modifie l'attribut pour qu'il soit exécutable.

je passe en root et je l'exécute: /home/wido/Desktop/hosts.sh , le script se déroule normalement:

Code : Tout sélectionner

bash-3.2# '/home/wido/Desktop/hosts.sh' 
--2009-03-01 20:39:57--  http://www.mvps.org/winhelp2002/hosts.txt
Résolution de www.mvps.org... 209.68.48.119
Connexion vers www.mvps.org|209.68.48.119|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 610711 (596K) [text/plain]
Saving to: `/tmp/hosts.txt'

100%[======================================>] 610 711      126K/s   in 5,2s    

2009-03-01 20:40:03 (114 KB/s) - « /tmp/hosts.txt » sauvegardé [610711/610711]

bash-3.2# 
je vérifie que le fichier existe dans /tmp/hosts , je l'ouvre il y a bien les lignes hosts (127.0.0.1 bidule.com)
ensuite j'ouvre le fichier /etc/hosts et voilà il n'y a aucune de ces lignes.

Publié : dim. 01 mars 2009, 21:43
par mimas
Il n'y pas utilisation ni création d'un fichier hosts dans /tmp.

Publié : dim. 01 mars 2009, 21:57
par mélodie
Hic !

Soit tu t'es trompé en répondant soit tu t'es trompé sur toute la ligne, mais en ce cas tu ne devrais peut-être même pas être capable de venir sur le web avec ton actuel fichier /etc/hosts ? Bon j'en sais rien.

Voici mon fichier /etc/hosts quand il est... on va dire, d'origine, d'accord ? Sachant que j'ai nommé ma machine squirrel (c'est son nom d'hôte) et que son ip fixe sur le réseau local est 192.168.0.2 (c'est aussi l'ip que je trouve si je lance ifconfig : d'accord ?)

Voici mon fichier /etc/hosts:
127.0.0.1 localhost.localdomain localhost squirrel
192.168.0.2 squirrel ## là ce n'est pas obligatoire
192.168.0.1 routeur ## là c'est ma passerelle ce n'est pas obligatoire non plus
192.168.0.33 trottinette ## là c'est une autre machine sur le réseau local ce n'est pas obligatoire non plus
C'est aussi possible d'avoir le même avec un commentaire avant et après:
#<ip-adress> <localhost.localdomain.org><hostname>
127.0.0.1 localhost.localdomain localhost squirrel
192.168.0.2 squirrel ## là ce n'est pas obligatoire
192.168.0.1 routeur ## là c'est ma passerelle ce n'est pas obligatoire non plus
192.168.0.33 trottinette ## là c'est une autre machine sur le réseau local ce n'est pas obligatoire non plus
# end of file
Voilà. Tu noteras que ce que tu nous indiques (ton pastebin) comme étant ton fichier hôte ne ressemble pas à un fichier hôte.

Le script de mimas, *une fois chez moi*, est maintenant ceci:
#!/bin/sh

HOSTS=/etc/hosts
WH_HOSTS=/tmp/hosts.txt

if [ ! $(id -u) = 0 ]; then
echo "Il faut être root"
exit 1
fi

[ -f $WH_HOSTS ] && rm $WH_HOSTS

wget http://www.mvps.org/winhelp2002/hosts.txt -O $WH_HOSTS

cat > $HOSTS << EOT
#<ip-adress> <localhost.localdomain.org><hostname>
127.0.0.1 localhost.localdomain localhost squirrel
192.168.0.2 squirrel ## là ce n'est pas obligatoire
192.168.0.1 routeur ## là c'est ma passerelle ce n'est pas obligatoire non plus
192.168.0.33 trottinette ## là c'est une autre machine sur le réseau local ce n'est pas obligatoire non plus
# end of file

##### L'antipub commence ######

EOT
dos2unix $WH_HOSTS

# On change les adresses 127.0.0.1 vers 0.0.0.0
# et on évite de remettre une nouvelle adresse pour localhost
sed -i "s#127\.0\.0\.1#0.0.0.0#" $WH_HOSTS
sed -i "s#.*localhost##" $WH_HOSTS

cat $WH_HOSTS | grep -E "^([0\.]{7}|#) " >> $HOSTS
Toute la partie en ROUGE est le contenu de mon fichier /etc/hosts originel :!:

C'est cette partie là que tu dois personnaliser pour que ce script ajoute ce qui est souhaité. (Sans supprimer ce qui est là à l'origine).

Ensuite, je nomme ce script par un nom identifiable autre-que-hosts surtout : hostmodif par exemple (pas de .sh à la fin). Je le rends exécutable et l'exécute ainsi, directement depuis le répertoire où je l'ai installé (sois chez moi le répertoire .local/bin que j'ai créé exprès pour les scripts personnels à garder sous la main) :

Code : Tout sélectionner

$cd .local/bin
$su
passwd (ici j'écris mon mot de passe root)
#./hostmodif
Et c'est tout ! Nous ne nous occupons pas de ce qui se passe dans /tmp, nous n'avons pas besoin de nous en occuper et nous ne voulons pas le savoir.

À toi de jouer. :)

Publié : mar. 03 mars 2009, 17:59
par wido
non plus, il n'y a pas une affaire de dépendance ou une connerie du genre?
je l'ai fait sur un autre pc et j'ai exactement le même résultat avec le script de melodie.


edit:
bash-3.2# pacman -Ss dos2unix
extra/hd2u 1.0.3-1
Dos2Unix text file converter
mais ça avance

EDIT2 j'en ai fait un qui fonctionne:

Code : Tout sélectionner

#!/bin/sh 

if [ ! $(id -u) = 0 ]; then 
   echo "Il faut être root" 
   exit 1 
fi

rm /tmp/hosts
rm /tmp/hosts.txt
echo "127.0.0.1     localhost
# *********************************************************#" >> /tmp/hosts
wget http://www.mvps.org/winhelp2002/hosts.txt -O /tmp/hosts.txt

cat /tmp/hosts.txt >> /tmp/hosts
cp /tmp/hosts /etc/hosts

Publié : mar. 03 mars 2009, 18:27
par tuxce
pour savoir pourquoi l'autre ne fonctionnait pas:
rajoute un

Code : Tout sélectionner

set -x
juste après

Code : Tout sélectionner

#!/bin/sh
lance ton script avec

Code : Tout sélectionner

'/home/wido/Desktop/hosts.sh' &> un_fichier_de_log
et pastebin le fichier de log.

Publié : mar. 03 mars 2009, 18:49
par wido
http://pastebin.archlinux.fr/pastebin.php?dl=323346

tu n'en apprenderas rien , la partie du copiage de /tmp/hosts.txt vers /etc/hosts doit manquer quelque chose ou il doit me manquer une dépendance. la copie du script est correcte voilà après le résultat revient au meme que le post de 28 feb 2009,21:11 sauf le début.

le pastebin a été effectué avec la modif du script de mélodie.

Publié : mar. 03 mars 2009, 19:49
par tuxce
en même temps, mettre sur pastebin exactement ce que tu as déjà posté, ça sert pas à grand chose :roll:
t'as oublié le "set -x" (pourtant, mon post n'était pas long)...

Publié : mar. 03 mars 2009, 20:27
par wido

Code : Tout sélectionner

[wido@desktop ~]$ su
Mot de passe : 
bash-3.2# set -x 
bash-3.2# #!/bin/sh
bash-3.2# '/home/wido/Desktop/hostmodif2' &> /home/wido/Desktop/testhost.log
+ /home/wido/Desktop/hostmodif2
voici la procédure que j'ai faite :roll: ,et j'ai bien suivi ce que tu as mis, de tout façon je ne vois pas pourquoi je me complique la vie mon script fonctionne , mon problème est résolu.
merci quand même pour l'aide

Publié : mar. 03 mars 2009, 21:00
par tuxce
wido a écrit :

Code : Tout sélectionner

[wido@desktop ~]$ su
Mot de passe : 
bash-3.2# set -x 
bash-3.2# #!/bin/sh
tuxce a écrit : rajoute un

Code : Tout sélectionner

set -x
juste après

Code : Tout sélectionner

#!/bin/sh
je suis pas sûr, mais je pense que "rajoute" veut dire mettre dans le fichier et "après" veut dire ... après :?
mais t'as raison, pas besoin de se compliquer la vie.

Publié : mar. 03 mars 2009, 21:04
par wido