1) Fácil solución: utilizar Compañero de cambiar automáticamente su ubicación en la red (y un montón de otros valores) dependiendo de la red.
Aparte: Sidekick es la nueva versión de una aplicación que anteriormente era conocido como NetworkLocation.la aplicación , pero ha sido completamente re-escrito. Yo era un beta-tester de la aplicación, pero también soy un cliente de pago de la misma, y no tiene ninguna otra conexión a la aplicación.
La aplicación cuesta $29, pero hay una demostración que puede utilizar para ver cómo funciona antes de comprar. Muy recomendable.
2) Si desea una solución gratuita, usted podría escribir un script de shell que se ejecuta a través de launchd. En primer lugar usted necesita un archivo plist, algo como esto:
<?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>
Cambio /path/to/your/shell/script.sh
a sea cual sea el camino que terminan haciendo de su secuencia de comandos de shell (y asegúrese de que el script ejecutable):
chmod 755 /path/to/your/shell/script.sh
La parte difícil es el mismo script. Hay dos maneras de hacer esto:
"El SSID Manera"
Básicamente, usted tiene que encontrar alguna manera programática para saber cuando están en el hogar (es decir, cuando se desea utilizar PPPoE) y cuando no. La más sencilla manera de hacerlo es por averiguar cuales de red Wi-Fi.
NOTA: voy a asumir que usted tiene la configuración de una nueva ubicación de red llamado "PPPOE" que desea utilizar cuando usted está en casa, frente a los genéricos "Automático", el cual será utilizado en otros lugares.
La primera parte de la secuencia de comandos podría tener este aspecto:
#!/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}'`
Entonces usted necesita para realizar diferentes acciones según el SSID, que sería algo como esto (cambio 'mySSID' por lo que su casa SSID)
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 usted NO tiene una red Wi-Fi doméstica, entonces usted tendría que mirar por la ausencia de un SSID, que podría tener este aspecto
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)
Posibles dificultades: cuando el primer equipo 'despierta' tomará un par de segundos para conectarse a una red Wi-Fi, por lo que usted puede necesitar añadir un poco de 'sueño' comandos para evitar cambiar las ubicaciones antes de que toda la información de la red se ha actualizado.
"El Ethernet y Wi-Fi de Forma"
Para los propósitos de esta discusión, "Ethernet" significa "el equipo está conectado a una red mediante un cable físico."
Si sólo vas a usar Ethernet en casa, otra opción es deshabilitar el puerto Ethernet cuando no esté en uso (que yo suponga que significa que PPPOE no intentará conectarse, pero que puede ser una suposición incorrecta).
Ya he escrito un script que hace eso, que se puede encontrar aquí: http://dl.dropbox.com/u/18414/ase/29227/wired-no-wifi.sh que se puede utilizar con launchd.
Tenga en cuenta que el script se asume que el puerto Ethernet está en0 y el Wi-Fi puerto es en1.
launchd nota
Supongo que usted sabe que su plist para launchd debe ser almacenado en ~/Library/LaunchAgents
y que después de añadir una nueva, tendrá que cerrar/iniciar sesión o usar launchctl load
como este:
launchctl load ~/Library/LaunchAgents/YourLaunchdFileHere.plist
Hablando en serio, trate de Sidekick
De repente, $30 se ve bonito y barato, no se ;-?
Sí se puede geek y ello en la línea de comandos, pero Sidekick puede hacer todo esto y más, y mucho más fácilmente. A menos que seas extremadamente pobres, barato, y/o nerd, le recomiendo que sobre launchd
-- pero todavía me encanta ser capaz de conseguir que "bajo el capó" y jugar con este tipo de cosas.