1) Solución fácil: use Sidekick para cambiar automáticamente la ubicación de su red (y muchas otras configuraciones) dependiendo de la red usted está en.
Aparte: Sidekick es la nueva versión de una aplicación que anteriormente se conocía como NetworkLocation.app pero ha sido completamente reescrito Fui un beta-tester para la aplicación, pero también soy un cliente que paga y no tengo otra conexión con la aplicación.
La aplicación cuesta $ 29, pero hay una demostración que puede usar para ver cómo funciona antes de comprar. Muy recomendable.
2) Si desea una solución gratuita, puede escribir un script de shell que se ejecute a través de launchd. Primero necesitarías 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>
Cambie /path/to/your/shell/script.sh
a cualquier ruta que termine haciendo en su script de shell (y asegúrese de que el script sea ejecutable):
chmod 755 /path/to/your/shell/script.sh
La parte difícil es el script en sí. Hay dos formas de hacer esto:
"The SSID Way"
Básicamente, tiene que encontrar una manera programática de saber cuándo está en casa (es decir, cuándo quiere usar PPPoE) y cuándo no. La forma más sencilla de hacerlo es averiguar en qué red Wi-Fi está conectado.
NOTA: asumiré que ha configurado una nueva ubicación de red llamada "PPPOE" que desea usar cuando esté en su hogar, en lugar del genérico "Automático", que será utilizado en otros lugares.
La primera parte del script 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}''
Luego, debe realizar diferentes acciones según el SSID, que se vería de esta forma (cambie 'mySSID' a cualquiera que sea su SSID local)
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 NO tiene una red Wi-Fi doméstica, tendrá que buscar 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)
Peligros potenciales: cuando la computadora se "despierta" por primera vez, tardará unos segundos en conectarse a una red Wi-Fi, por lo que es posible que deba agregar algunos comandos de "suspensión" para evitar cambiar de ubicación antes de que toda la red la información se ha actualizado.
"El modo Ethernet vs Wi-Fi"
Para los fines de esta discusión, "Ethernet" significa "la computadora está conectada a una red mediante un cable físico".
Si solo usas Ethernet en casa, otra opción es deshabilitar tu puerto Ethernet cuando no esté en uso (lo que asumo asumiendo significa que PPPOE no intentará conectarse, pero puede ser una suposición incorrecta) ).
Ya escribí un script que hace eso, que puede encontrar aquí: enlace que puedes usar con launchd.
Tenga en cuenta que el script asume que su puerto Ethernet es en0 y su puerto Wi-Fi es en1.
nota de lanzamiento
Supongo que sabes que tu lista para launchd debe almacenarse en ~/Library/LaunchAgents
y que después de agregar una nueva, debes cerrar sesión / iniciar sesión o usar launchctl load
como esto:
launchctl load ~/Library/LaunchAgents/YourLaunchdFileHere.plist
Aunque en serio, prueba Sidekick
De repente, $ 30 parece bastante barato, ¿no? -?
Sí, puedes hacer geek y hacer esto en la línea de comandos, pero Sidekick puede hacer todo esto y mucho más, y mucho más fácilmente. A menos que sea extremadamente pobre, barato y / o nerd, lo recomiendo mucho más que launchd
, pero todavía me encanta poder estar "bajo el capó" y jugar con este tipo de cosas.