1) Solution facile : utiliser Sidekick pour modifier automatiquement l'emplacement de votre réseau (et un grand nombre d'autres paramètres) en fonction du réseau sur lequel vous vous trouvez.
A part : Sidekick est la nouvelle version d'une application qui était auparavant connue sous le nom de NetworkLocation.app mais il a été complètement réécrit. J'ai été bêta-testeur de l'application, mais j'en suis également un client payant et je n'ai aucun autre lien avec l'application.
L'application coûte 29 dollars, mais il existe une version de démonstration que vous pouvez utiliser pour voir comment elle fonctionne avant de l'acheter. Hautement recommandé.
2) Si vous voulez une solution gratuite, vous pouvez écrire un shell script qui s'exécute via launchd. D'abord, vous auriez besoin d'un fichier plist, quelque chose comme ceci :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AbandonProcessGroup</key>
<true/>
<key>Label</key>
<string>localhost.networkmonitor</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/shell/script.sh</string>
</array>
<key>StartInterval</key>
<integer>120</integer>
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration/</string>
</array>
</dict>
</plist>
Changement /path/to/your/shell/script.sh
à n'importe quel chemin que vous finissez par faire à votre shell script (et assurez-vous que le script est exécutable) :
chmod 755 /path/to/your/shell/script.sh
La partie difficile est le script lui-même. Il y a deux façons de le faire :
"La méthode SSID"
En fait, vous devez trouver un moyen programmatique de savoir quand vous êtes chez vous (c'est-à-dire quand vous voulez utiliser PPPoE) et quand vous ne l'êtes pas. Le site le plus facile La meilleure façon de le faire est de déterminer sur quel réseau Wi-Fi vous vous trouvez.
NOTE : Je vais supposer que vous avez configuré un nouvel emplacement réseau appelé "PPPOE" que vous voulez utiliser lorsque vous êtes à la maison, par opposition au générique "Automatic" qui sera utilisé ailleurs.
La première partie du script pourrait ressembler à ceci :
#!/bin/sh
# Apple provides a utility called 'airport' but it's buried outside of the normal $PATH
# so you'll have to call it directly (or link it to somewhere in your $PATH using 'ln -s')
# this is the correct path for Snow Leopard and Lion. I think it had a different path
# in earlier versions of OS X but I'm not sure
AIRPORT='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport'
# get the SSID of the network you are connected to
SSID=`${AIRPORT} -I | awk -F": " '/ SSID:/{print $NF}'`
Ensuite, vous devez effectuer différentes actions en fonction du SSID, ce qui pourrait ressembler à ceci (remplacez 'mySSID' par le SSID de votre domicile)
if [ "$SSID" = "mySSID" ]
then
# Select your 'PPPOE' network location (or whatever you called it)
scselect PPPOE
else
# If we are not on that Wi-Fi network, select the default 'Automatic' network location
scselect Automatic
fi
Si vous ne disposez PAS d'un réseau Wi-Fi à domicile, vous devrez alors chercher le absence d'un SSID, qui pourrait ressembler à ceci
if [ "$SSID" = "" ]
then
# no Wi-Fi network found, let's assume that we are at home
scselect PPPOE
else
# if there is a Wi-Fi network, let's use the 'Automatic' network location
scselect Automatic
fi
exit 0
# (End of script)
Pièges potentiels : lorsque l'ordinateur se réveille pour la première fois, il lui faut quelques secondes pour se connecter à un réseau Wi-Fi. Vous devrez peut-être ajouter des commandes de "mise en veille" pour éviter de changer d'emplacement avant que toutes les informations sur le réseau aient été mises à jour.
"La voie Ethernet vs Wi-Fi"
Aux fins de cette discussion, "Ethernet" signifie que "l'ordinateur est branché à un réseau par un câble physique".
Si vous n'utilisez Ethernet qu'à la maison, une autre option consiste à désactiver votre port Ethernet lorsqu'il n'est pas utilisé (ce que j'ai fait). supposez signifie que PPPOE n'essaiera pas de se connecter, mais cela peut être une supposition incorrecte).
J'ai déjà écrit un script qui fait cela, que vous pouvez trouver ici : http://dl.dropbox.com/u/18414/ase/29227/wired-no-wifi.sh que vous pourriez utiliser avec launchd.
Notez que script suppose que votre port Ethernet est en0 et que votre port Wi-Fi est en1.
note de lancement
Je suppose que vous savez que votre plist pour launchd doit être stocké dans ~/Library/LaunchAgents
et qu'après en avoir ajouté un nouveau, il faut soit se déconnecter/se connecter, soit utiliser la fonction launchctl load
comme ça :
launchctl load ~/Library/LaunchAgents/YourLaunchdFileHere.plist
Sérieusement, essayez Sidekick
Tout d'un coup, 30 dollars semblent plutôt bon marché, n'est-ce pas ?
Oui, vous pouvez faire tout cela en ligne de commande, mais Sidekick peut faire tout cela et plus encore, et beaucoup plus facilement. A moins que vous ne soyez extrêmement pauvre, bon marché, et/ou nerd, je vous recommande fortement de préférer Sidekick à la ligne de commande. launchd
-- mais j'aime toujours autant pouvoir aller "sous le capot" et bricoler ce genre de choses.