Accueil Système d'exploitationMac Désactiver automatiquement Airport quand vous êtes connecté en Ethernet

Désactiver automatiquement Airport quand vous êtes connecté en Ethernet

Par deherve

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” ]; then

if [ “$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_status

if [ “$air_status” = “On” ]; then
growl “AirPort manually turned on.”
else
growl “AirPort manually turned off.”
fi

fi

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
fi

exit 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.

0 / 5 Moyenne 0 Votes 0

Your page rank:

Vous aimerez aussi

6 commentaires

daguins 12 octobre 2010 - 12 h 10 min

je me disais aussi qu’il y avait une solution pour ça – MERCI 🙂 🙂 🙂

Répondre
Vincent 18 octobre 2010 - 16 h 20 min

Yep moi je cherche un moyen d’activer airport avec une commande 🙂 Une idée ? Merci super site…
Bye

Répondre
deherve 18 octobre 2010 - 18 h 41 min

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é

Répondre
Vincent 18 octobre 2010 - 19 h 27 min

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

Répondre
XciD 10 janvier 2011 - 19 h 11 min

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

Répondre

Laisser un commentaire

Quitter la version mobile