¿Puedo deshabilitar wifi automáticamente si hay una conexión ethernet?

Cuando despierto mi máquina por la mañana, a menudo permanece en blanco porque hay algún conflicto entre mi monitor 4k y el diálogo "El nombre de su computadora ha cambiado por 3950 veces" que significa que ambas pantallas están apagadas hasta que descarto el diálogo. No puedo ver.

No quiero tener que encender y apagar el wifi manualmente (tenemos computadoras que hacen las cosas automáticamente por nosotros) y necesito una conexión por cable mientras estoy en mi escritorio.

Entonces, ¿puedo decirle a la Mac que solo habilite wifi si eth0 está inactivo?

¿O convertir el cuadro de diálogo "El nombre de su computadora ha cambiado" en una notificación que no necesita descartarse manualmente, porque realmente no me importa qué número Apple ha decidido agregarle hoy?

Simplemente cambie la prioridad de servicio de las interfaces moviendo la interfaz Ethernet hacia arriba en Preferencias del sistema > Red > Engranaje en la parte inferior > Establecer orden de servicio...
@klanomath Buena sugerencia. Pero el trabajo dijo que era hora de actualizar mi computadora portátil y opté por cambiar a Linux. Mucho más fácil que luchar contra Apple en cada paso del camino.

Respuestas (3)

Tienes varias soluciones:

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

Este es un script bash que apagará automáticamente su wifi si conecta su computadora a una conexión ethernet y vuelve a encender wifi cuando desconecte su cable/adaptador ethernet. Si decide activar wifi por cualquier motivo, recordará esa elección. Esto se improvisó a partir de esta sugerencia de mac para trabajar con Yosemite y sin codificar los nombres de los adaptadores. Se supone que admite gruñido, pero no revisé esa parte. Sin embargo, agregué soporte para el centro de notificaciones de OSX. Siéntase libre de bifurcar y arreglar cualquier problema que encuentre.

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

  2. La búsqueda de Google asociada:

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

En este momento, esta publicación de stackoverflow es el principal resultado de Google para "mac desactivar wifi en ethernet". Esto hace que su solución #3 sea discutible...
LOL Cualquier solución basada en la búsqueda de Google es evidentemente discutible, especialmente cuando es google.fr(o cualquier otra búsqueda localizada).

Me doy cuenta de que esta pregunta es un poco antigua... sin embargo, como hay varias formas de lograr el mismo resultado, pensé que valía la pena compartir una más: usar Hammerspoon y un par de fragmentos de código Lua.

Hammerspoon es una herramienta para automatizar varias operaciones en una Mac. No estoy asociado a él de ninguna manera, literalmente lo instalé para intentar lograr el mismo propósito que el OP.

Para cualquier cosa que desee automatizar, escriba pequeños scripts de Lua; en este caso, creé un network.luaarchivo que guardé junto al archivo de configuración principal, $HOME/.hammerspoon/init.lua. Aquí está el contenido de ambos:

# 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

Lo único que tendrás que personalizar es el nombre de tu interfaz Ethernet en init.lua; en mi caso es "USB 10/100/1000 LAN"porque estoy usando un muelle. Puedes encontrar el nombre para el tuyo en la Networksección de tus Preferencias del Sistema.

Hace tiempo que no se actualiza, pero ControlPlane lo maneja muy bien.