applescript hosts

cellobrutos

Membre confirmé
5 Novembre 2008
34
1
37
Bonjour,

Je travaille actuellement avec deux fichiers hosts différents, en déplacement et en local. Je cherche un moyen de créer un script qui permettrait de passer de l'un à l'autre simplement, soit en gros pour passer en "hosts local":
Bloc de code:
sudo cp -f /etc/hosts-local /etc/hosts
puis éventuellement un flush DNS ensuite:
Bloc de code:
dscacheutil -flushcache

Problème, je suis une quiche en Applescript, j'y ai passé un moment ce matin mais sans succès.
Peut-être qu'il existe déjà une application comme WICD sous linux qui permet de faire ceci?

Sinon, est-ce que quelqu'un de super gentil se sentirait de me le faire? Il me faudra aussi évidemment le script pour revenir en mode "non local", mais ça je peux extrapoler bien sûr.

Merci d'avance! Encore une fois, désolé de ne pas prendre le temps "d'apprendre" comment faire - j'ai beaucoup cherché sur internet, mais je ne sais vraiment pas par où commencer avec Applescript...

François
 
Bonjour,

Un AppleScript qui switche les fichiers hosts serait comme ceci
Un dialogue s'affichera, car un mot de passe administrateur sera exigé.
Bloc de code:
if (do shell script "/usr/bin/head -1 /etc/hosts") = "##Local" then
	do shell script "/bin/cp -f /etc/hosts-non-local /etc/hosts ;/usr/bin/dscacheutil -flushcache" with administrator privileges
else
	do shell script "/bin/cp -f /etc/hosts-local /etc/hosts ;/usr/bin/dscacheutil -flushcache" with administrator privileges
end if

Cela implique que le fichier "hosts-non-local" doit exister, et que le contenu de la première ligne dans le fichier "hosts-local" doit être "##Local".
 
Merci Mac_Jac, c'est presque exactement ce à quoi je pensais. Je vais le modifier comme ceci afin d'obtenir ce que je veux, à savoir plutôt une boîte de dialogue me demandant si je veux passer en local ou en non-local... Je le mets si ça aide d'autres personnes recherchant ceci.

Bloc de code:
display dialog "Réseau local ou exterieur?" buttons {"Local", "Exterieur", "Annuler"} default button 1

if button returned of the result is "Local" then
	do shell script "/bin/cp -f /etc/hosts-local /etc/hosts ;/usr/bin/dscacheutil -flushcache" with administrator privileges
else if button returned of the result is "Exterieur" then
	do shell script "/bin/cp -f /etc/hosts-web /etc/hosts ;/usr/bin/dscacheutil -flushcache" with administrator privileges
end if

Pour info et pour ceux que ça intéresse, la seule différence (pour l'instant, peut-être y trouverai-je plus d'usages bientôt!) entre mes deux fichiers hosts est un reroutage d'une adresse 192.168.0.9 en un nom de domaine externe afin notamment de pouvoir travailler sur des installations wordpress en local qui soient également accessibles depuis le web et une redirection d'un sous-domaine de mon site, avec les bons chemins de fichiers!