Je réalise que cette question est un peu ancienne... cependant, comme il existe plusieurs façons d'accomplir le même résultat, j'ai pensé qu'il valait la peine de partager une autre méthode: en utilisant Hammerspoon et quelques extraits de code Lua.
Hammerspoon est un outil pour automatiser diverses opérations sur un Mac. Je n'y suis associé d'aucune manière, je l'ai littéralement installé pour essayer d'atteindre le même objectif que l'auteur de la question.
Pour automatiser quoi que ce soit, vous écrivez de petits scripts Lua ; dans ce cas, j'ai créé un fichier network.lua
que j'ai enregistré à côté du fichier de configuration principal, $HOME/.hammerspoon/init.lua
. Voici le contenu des deux :
# init.lua
-- Imports
local homeNetwork = require "network"
-- Toggle WiFi based on Ethernet being connected or not
homeNetwork.setEthernetInterface("USB 10/100/1000 LAN")
systemWatcher = hs.caffeinate.watcher.new(homeNetwork.handleWifi)
systemWatcher:start()
# network.lua
local M = {}
local ethernetInterface
local function isEthernetConnected()
ipv4 = hs.network.primaryInterfaces()
activeInterfaceName = hs.network.interfaceName(ipv4)
return activeInterfaceName == ethernetInterface
end
local function toggleWifi()
desiredState = not isEthernetConnected() and true or false
if hs.wifi.interfaceDetails()['power'] ~= desiredState then
hs.wifi.setPower(desiredState)
newState = desiredState and "on" or "off"
hs.alert.show("Turning wifi " .. newState)
else
hs.alert.show("Wifi already in the desired state")
end
end
function M.setEthernetInterface(ethernetInterfaceName)
ethernetInterface = ethernetInterfaceName
end
function M.handleWifi(event)
if event == hs.caffeinate.watcher.systemDidWake then
toggleWifi()
elseif event == hs.caffeinate.watcher.screensDidUnlock then
toggleWifi()
end
end
return M
La seule chose que vous aurez à personnaliser est le nom de votre interface Ethernet dans init.lua
; dans mon cas c'est "USB 10/100/1000 LAN"
car j'utilise un dock. Vous pouvez trouver le nom du vôtre dans la section Réseau
de vos Préférences Système.
8 votes
Simplement changez la priorité de service des interfaces en déplaçant l'interface Ethernet en haut dans Préférences Système > Réseau > Engrenage en bas > Définir l'ordre de service...
0 votes
@klanomath Bonne suggestion. Mais le travail a dit qu'il était temps de rafraîchir mon ordinateur portable et j'ai choisi de passer à Linux à la place. Beaucoup plus facile que de se battre contre Apple à chaque étape.
0 votes
Voir également apple.stackexchange.com/questions/98815/…
0 votes
@klanomath - C'est la solution officielle, mais cela ne fonctionne pas de manière cohérente. macOS ne respecte souvent pas l'ordre de service configuré. Voir: apple.stackexchange.com/q/349903/12509
0 votes
"wifi" est écrit "WiFi". Pourriez-vous corriger cela ?