Il existe un moyen astucieux de désactiver la connexion Airport (Wifi) de votre Mac, lorsque celui-ci est connecté à un câble Ethernet. Cela est très pratique, car vous réduisez ainsi les requêtes vers le réseau qui serait dispersé par le nombre de connecteurs de votre machine et vous privilégieriez l’accès au réseau par le biais de votre port Ethernet.
Création du script permettant la désactivation d’Airport
Pour cela, il va falloir créer un fichier toggleAirport.sh dans le dossier /Library/Scripts/ et lui donner les droits chmod en 755 via le terminal ou bien en utilisant un programme graphique comme FGPermission.
Contenu du Script :
#!/bin/bash
function set_airport {
new_status=$1
if [ $new_status = « On » ]; then
/usr/sbin/networksetup -setairportpower en1 on
touch /var/tmp/prev_air_on
else
/usr/sbin/networksetup -setairportpower en1 off
if [ -f « /var/tmp/prev_air_on » ]; then
rm /var/tmp/prev_air_on
fi
fi}
function growl {
# Checks whether Growl is installed
if [ -f « /usr/local/bin/growlnotify » ]; then
/usr/local/bin/growlnotify -m « $1 » -a « AirPort Utility.app »
fi}
# Set default values
prev_eth_status= »Off »
prev_air_status= »Off »eth_status= »Off »
# Determine previous ethernet status
# If file prev_eth_on exists, ethernet was active last time we checked
if [ -f « /var/tmp/prev_eth_on » ]; then
prev_eth_status= »On »
fi# Determine same for AirPort status
# File is prev_air_on
if [ -f « /var/tmp/prev_air_on » ]; then
prev_air_status= »On »
fi# Check actual current ethernet status
if [ « `ifconfig en0 | grep « status: active »` » != « » ]; then
eth_status= »On »
fi# And actual current AirPort status
air_status=`/usr/sbin/networksetup -getairportpower en1 | awk ‘{ print $4 }’`# If any change has occured. Run external script (if it exists)
if [ « $prev_air_status » != « $air_status » ] || [ « $prev_eth_status » != « $eth_status » ]; then
if [ -f « ./statusChanged.sh » ]; then
« ./statusChanged.sh » « $eth_status » « $air_status » &
fi
fi# Determine whether ethernet status changed
if [ « $prev_eth_status » != « $eth_status » ]; thenif [ « $eth_status » = « On » ]; then
set_airport « Off »
growl « Wired network detected. Turning AirPort off. »
else
set_airport « On »
growl « No wired network detected. Turning AirPort on. »
fi# If ethernet did not change
else# Check whether AirPort status changed
# If so it was done manually by user
if [ « $prev_air_status » != « $air_status » ]; then
set_airport $air_statusif [ « $air_status » = « On » ]; then
growl « AirPort manually turned on. »
else
growl « AirPort manually turned off. »
fifi
fi
# Update ethernet status
if [ « $eth_status » == « On » ]; then
touch /var/tmp/prev_eth_on
else
if [ -f « /var/tmp/prev_eth_on » ]; then
rm /var/tmp/prev_eth_on
fi
fiexit 0
Création du Fichier Plist permettant l’initialisation du service
Il faut maintenant créer le fichier com.mine.toggleairport.plist dans le dossier /System/Library/LaunchAgents avec le code ci-dessous :
<?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>Label</key>
<string>com.asb.toggleairport</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Library/Scripts/toggleAirport.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration</string>
</array>
</dict>
</plist>
C’est terminé, après le redémarrage de votre système, l’agent se lancera avec Mac Os X et détectera la présence d’une connexion Ethernet et désactivera automatiquement la connexion Airport de votre machine.
Sachez toutefois, que si vous réactivez Airport, l’agent ne le désactivera pas de nouveau, il faudra le faire manuellement.
6 commentaires
je me disais aussi qu’il y avait une solution pour ça – MERCI 🙂 🙂 🙂
Yep moi je cherche un moyen d’activer airport avec une commande 🙂 Une idée ? Merci super site…
Bye
Bonjour vincent, tu cherche une commande Terminal ou un Script ?
En terminal, tu peux saisir la commande : sudo ifconfig en1 up
Par défaut en0 est la carte Ethernet et en1 la carte Aiport, à vérifier selon ta configuration.
Hervé
Bin écoute en fait je cherchais un moyen simple d’activer le partage de mon éthernet via mon wifi… avec airport. J’ai bidouillé un script, maintenant ce que tu me donne acélère bien le procécus de partage « en 1 click » de mon internet via l’airport.
C’est les invités de mon hotspot qui vont être content 😀
Merci
Ton scipt m’interesse beaucoup mais il ne fonctionne pas , lorsque je le lance avec le terminal il trouve 4 erreur ligne 29,30,32,48 Command not found avec off et on , j’ai essayé de touché mais je m’y connais pas trop :s
En tt cas merci