PPPoE login automatique lors du débrochage

J'ai une connection Internet PPPoE que j'utilise sur mon Macbook Pro.

Il existe une checkbox dans les parameters qui permet de se reconnecter automatiquement au besoin – ce qui est bon. Cependant, le système n'est pas assez intelligent pour arrêter d'essayer lorsque je détwig le câble Ethernet.

Lorsque je détwig l'Ethernet pour m'envoyer, il continue de me dire toutes les 5 minutes qu'il n'a pas réussi à se connecter. Jusqu'à ce que je décoche la fonction de connection automatique. Ensuite, bien sûr, quand je rentre à la maison, je dois le vérifier de nouveau – ce qui détruit le but de la connection "automatique".

1) Solution facile: utilisez Sidekick pour changer automatiquement votre location réseau (et beaucoup d'autres parameters) selon le réseau sur lequel vous vous trouvez.

Par ailleurs: Sidekick est la nouvelle version d'une application connue sous le nom de NetworkLocation.app mais elle a été complètement réécrit. J'étais un bêta-testeur pour l'application, mais je suis également un client payant et je n'ai aucune autre connection à l'application.

L'application coûte 29 $, mais il existe une démo que vous pouvez utiliser pour voir comment cela fonctionne avant d'acheter. Hautement recommandé.

2) Si vous voulez une solution gratuite, vous pouvez écrire un script shell qui s'exécute via launchd. D'abord, vous auriez besoin d'un file 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> <ssortingng>localhost.networkmonitor</ssortingng> <key>ProgramArguments</key> <array> <ssortingng>/path/to/your/shell/script.sh</ssortingng> </array> <key>StartInterval</key> <integer>120</integer> <key>WatchPaths</key> <array> <ssortingng>/Library/Preferences/SystemConfiguration/</ssortingng> </array> </dict> </plist> 

Changez /path/to/your/shell/script.sh vers n'importe quel path que vous /path/to/your/shell/script.sh par créer votre script shell (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 faire ça:

"La voie SSID"

Fondamentalement, vous devez find une façon programmable de savoir quand vous êtes à la maison (c'est-à-dire lorsque vous souhaitez utiliser PPPoE) et lorsque vous ne le faites pas. La façon la plus simple de le faire est de déterminer le réseau Wi-Fi sur lequel vous êtes.

REMARQUE: Je suppose que vous avez configuré un nouvel location de réseau appelé «PPPOE» que vous souhaitez utiliser lorsque vous êtes à la maison, par opposition au générique «Automatique» 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 prendre différentes actions selon le SSID, qui ressemblerait à ceci (modifiez 'mySSID' à quel que soit votre SSID domestique)

 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 n'avez PAS de réseau Wi-Fi domestique, vous devriez chercher l' 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) 

Les pièges potentiels: lorsque l'ordinateur «se réveille», il vous faudra quelques secondes pour vous connecter à un réseau Wi-Fi, vous devrez peut-être append des commands «dormir» pour éviter de commuter des locations avant que toutes les informations du réseau ne soient mises à jour .

"L'Ethernet vs Wi-Fi Way"

Aux fins de cette discussion, «Ethernet» signifie «l'ordinateur est branché sur un réseau par un câble physique».

Si vous utilisez uniquement Ethernet à la maison, une autre option est de désactiver votre port Ethernet lorsqu'il n'est pas utilisé (ce qui suppose que PPPOE n'essaie pas de se connecter, mais cela peut être une hypothèse incorrecte).

J'ai déjà écrit un script qui fait cela, que vous pouvez find ici: http://dl.dropbox.com/u/18414/ase/29227/wired-no-wifi.sh que vous pourriez utiliser avec launchd.

Notez que le script suppose que votre port Ethernet est en0 et votre port Wi-Fi est en1.

note lancée

Je suppose que vous savez que votre programme de lancement devrait être stocké dans ~/Library/LaunchAgents et qu'après avoir ajouté un nouveau, vous devez vous déconnecter ou vous connecter ou utiliser launchctl load comme ceci:

 launchctl load ~/Library/LaunchAgents/YourLaunchdFileHere.plist 

Sérieusement, essayez Sidekick

Tout à coup, 30 $ sont plutôt bon marché, n'est-ce pas?

Ouais, vous pouvez geek et faire cela sur la command line, mais Sidekick peut faire tout cela et plus, et beaucoup plus facilement. À less que vous soyez extrêmement pauvre, bon marché et / ou nerdy, je recommand vivement que plus de launchd – mais j'aime encore pouvoir «sous le capot» et bricoler ce genre de chose.

Utilisez une fonctionnalité d'location. C'est la list déroulante la plus haute sous Network preferences .

Choisissez Éditer les locations, créez un nouveau, appliquez et après, vous pourrez basculer entre l'accueil (avec la connection automatique PPPoE) et d'autres locations du menu Apple.