Kann ich WLAN automatisch deaktivieren, wenn eine Ethernet-Verbindung besteht?

Wenn ich mein Gerät morgens aufwecke, bleibt es oft leer, weil es einen Konflikt zwischen meinem 4k-Monitor und dem Dialog „Ihr Computername hat sich zum 3950. Mal geändert“ gibt, was bedeutet, dass beide Bildschirme ausgeschaltet sind, bis ich den Dialog schließe, den ich nicht kann sehen.

Ich möchte das WLAN nicht manuell ein- und ausschalten müssen – wir haben Computer, die Dinge automatisch für uns erledigen – und ich brauche eine Kabelverbindung, während ich an meinem Schreibtisch bin.

Kann ich dem Mac also sagen, dass er WLAN nur aktivieren soll, wenn eth0 inaktiv ist?

Oder den Dialog „Ihr Computername hat sich geändert“ in eine Benachrichtigung umwandeln, die nicht manuell gelöscht werden muss, weil es mir wirklich egal ist, welche Nummer Apple heute hinzugefügt hat?

Ändern Sie einfach die Dienstpriorität der Schnittstellen, indem Sie die Ethernet-Schnittstelle nach oben verschieben in Systemeinstellungen > Netzwerk > Zahnrad ganz unten > Dienstreihenfolge festlegen ...
@klanomath Guter Vorschlag. Aber die Arbeit sagte, es sei Zeit, meinen Laptop aufzufrischen, und ich entschied mich, stattdessen auf Linux umzusteigen. Viel einfacher, als Apple bei jedem Schritt zu bekämpfen.

Antworten (3)

Sie haben mehrere Lösungen:

  1. https://gist.github.com/albertbori/1798d88a93175b9da00b

Dies ist ein Bash-Skript, das Ihr WLAN automatisch ausschaltet, wenn Sie Ihren Computer mit einer Ethernet-Verbindung verbinden, und das WLAN wieder einschaltet, wenn Sie Ihr Ethernet-Kabel / Ihren Adapter abziehen. Wenn Sie sich aus irgendeinem Grund entscheiden, WLAN einzuschalten, wird es sich an diese Wahl erinnern. Dies wurde aus diesem Mac-Hinweis improvisiert, um mit Yosemite zu arbeiten, und ohne die Adapternamen fest zu codieren. Es soll Growl unterstützen, aber ich habe diesen Teil nicht überprüft. Ich habe jedoch die Unterstützung des OSX-Benachrichtigungszentrums hinzugefügt. Fühlen Sie sich frei, Probleme zu forken und zu beheben, auf die Sie stoßen.

  1. https://macperformanceguide.com/blog/2014/20141118_0958-OSX_Yosemite-disable-WIFI.html

  2. Die zugehörige Google-Suche:

https://www.google.fr/search?client=safari&rls=en&q=disable+wifi+if+ethernet+osx&ie=UTF-8&oe=UTF-8&gfe_rd=cr&ei=VL_cWMj1B-zUXt3CkLAM

Im Moment ist dieser Stackoverflow-Beitrag das beste Google-Ergebnis für „Mac deaktiviert WLAN im Ethernet“. Das macht Ihre Lösung Nr. 3 strittig ...
LOL Jede auf der Google-Suche basierende Lösung ist selbstverständlich strittig, insbesondere wenn sie es ist google.fr(oder jede andere lokalisierte Suche für diese Angelegenheit).

Mir ist klar, dass diese Frage etwas alt ist ... Da es jedoch mehrere Möglichkeiten gibt, dasselbe Ergebnis zu erzielen, hielt ich es für sinnvoll, eine weitere zu teilen: die Verwendung von Hammerspoon und ein paar Schnipseln von Lua-Code.

Hammerspoon ist ein Tool zur Automatisierung verschiedener Vorgänge auf einem Mac. Ich bin in keiner Weise damit verbunden, ich habe es buchstäblich installiert, um zu versuchen, den gleichen Zweck wie das OP zu erreichen.

Für alles, was Sie automatisieren möchten, schreiben Sie kleine Lua-Skripte; In diesem Fall habe ich eine network.luaDatei erstellt, die ich neben der Hauptkonfigurationsdatei gespeichert habe, $HOME/.hammerspoon/init.lua. Hier der Inhalt von beiden:

# 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

Das einzige, was Sie anpassen müssen, ist der Name Ihrer Ethernet-Schnittstelle in init.lua; In meinem Fall liegt es "USB 10/100/1000 LAN"daran, dass ich ein Dock verwende. Den Namen für Ihren finden Sie im NetworkAbschnitt Ihrer Systemeinstellungen.

Es wurde seit einiger Zeit nicht mehr aktualisiert, aber ControlPlane handhabt dies sehr gut.