Desactiva Airport automáticamente cuando conectes tu Mac a un cable ethernet

10/03/2010 por Redacción

Puede que necesites realizar esta tarea: cuando conectes tu Mac a una red ethernet, Airport debe desactivarse para ceder la conexión de forma inmediata a la red ethernet sin necesidad de hacerlo manualmente y recuperar la conexión inalámbrica cuando desconectes de nuevo el Mac de la red. para solucionarlo, hay una solución que implica crear un Daemon que ejecute un script.

Un demonio, daemon o dæmon (de sus siglas en inglés Disk And Execution MONitor), es un tipo especial de proceso informático que se ejecuta en segundo plano en vez de ser controlado directamente por el usuario (es un proceso no interactivo).

Este tipo de programas se ejecutan de forma continua (infinita), vale decir, que aunque se intente cerrar o matar el proceso, este continuará en ejecución o se reiniciará automáticamente. Todo esto sin intervención de terceros y sin dependencia de consola alguna. [Wikipedia]

Para ejecutar este truco en un Mac, necesitas crear un documento de texto plano con el nombre com.nombredetuempresa.ethernetmonitor y añadirle este texto:

<?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.nombredetuempresa.ethernetmonitor</string>

<key>ProgramArguments</key>

<array>

<string>/Library/Scripts/CompanyName/turnOffAirport.sh</string>

</array>

<key>WatchPaths</key>

<array>

<string>/Library/Preferences/SystemConfiguration</string>

</array>

</dict>

</plist>

Guarda el Daemon en Sistema > Librería > LaunchDaemons

Este DSaemon vigila el sistema en busca de cambios. Cuando el cambio se produce (es decir, cuando conectas un cable ethernet al Mac), automáticamente dispara un script de nombre turnOffAirport.sh que debes guardar en Librería > Scripts.

Para el script, crea un documento de texto plano y añádele este texto:

#!/bin/sh

if ifconfig en0 | grep 155.144;

then /usr/sbin/networksetup -setairportpower off

else

exit 0

fi

Deberás reiniciar para que el Daemon comience a ejecutarse y la funcionalidad se active.

Fuente: Mac OS X Hints

Comentarios

  • #1 Deorum_Motu el 09/03/2010
    ... pero, ¿sería posible la variante de utilizar una conexión por cada aplicación?. Me explico; usar Safari a través de ethernet y Firefox mediante wifi simultáneamente.

    Saludetes.
  • #2 Administrador el 09/03/2010
    Esa es una de esas cosas que llevamos mucho tiempo buscando/pensando y que se nos ha preguntado en infinidad de ocasiones: poder usar "por aplicación" una conexión específica de red. pero de momento, me parece que es imposible.

    Un saludo

    ---------------
    www.faq-mac.com
  • avatar
    #3 Anónimo el 09/03/2010
    Porque cuando quitas el cable debería volver automáticamente a WiFi, ¿no?
  • #4 metalazo el 09/03/2010
    ... siempre da gusto tener daemons tan útiles, gracias.

    una preguntita: ¿ si quisiera comprobar la actividad wifi (o navegar) del entorno mientras estoy conectado con ethernet a una Lan, permitiría activar airport momentáneamente o se corre el riesgo de sufrir desconexiones de la airport debido a que se activa constantemente el daemon?

    salu2
  • #5 sapset el 09/03/2010
    no entiendo el concepto de "nombredetuempresa"

    Que tiene que ver mi empresa con todo esto?

    La extension del documento plano es .plist o es ethernetmonitor ?
  • avatar
    #6 Anónimo el 09/03/2010
    Pues eso, me parece que no, pero como tampoco se demasiaod del tema me preguntaba si te reactivaria la airport al desenchufar el cable de red
    Un saludo
  • #7 rafapadi el 10/03/2010
    En el script:

    #!/bin/sh
    if ifconfig en0 | grep 155.144;
    then /usr/sbin/networksetup -setairportpower off
    else
    exit 0
    fi

    Por lo que he visto:

    - Donde pone "155.144" se deben poner los datos propios de la dirección de red, u obviamente el script no funcionará nunca a menos que coincidan dichos datos.

    - Donde pone "networksetup -setairportpower off" se debe poner entre "-setairportpower" y "off" el nombre del dispositivo o el script da error y tampoco funcionará.

    Esto es lo que he visto o al menos, esto es lo que a mi me ha pasado.

    Espero haber sido de alguna utilidad. Saludos cordiales, Rafa.

  • #8 hmolina el 10/03/2010
    Hola,

    La verdad es que es una utilidad curiosa :-D.

    Si alguien quiere que se active la wireless en cuanto se desconecte el cable y viceversa, adjunto una breve modificación al script (también corrige la búsqueda del parámetro para activar la conexión de cable)

    #!/bin/sh
    if ifconfig en0 | grep inet;
    then /usr/sbin/networksetup -setairportpower en1 off
    else
    STATUS=`/usr/sbin/networksetup -getairportpower en1 | grep Off | wc -l `
    if [ $STATUS -gt 0 ]
    then
    /usr/sbin/networksetup -setairportpower en1 on
    fi
    fi
    exit 0


    Básicamente: primero busca el valor inet en la red de cable. Si existe es que tiene una dirección IP. Si la tiene, apaga la red inalámbrica. Si no tiene dirección IP la red de cable, revisa el estado de la red inalámbrica. Si está encendida, la deja en paz, si no, la enciende.

    Hay que tener cuidado con este tipo de scripts, porque si en algún momento hay que apagar la red inalámbrica y no se está conectado a la red de cable, hay que desactivar el script.

    Un saludo

    H.
  • avatar
    #9 Anónimo el 10/03/2010
    Muchas gracias por la modificación del script, ahora lo tengo un pelín mas claro el asunto.

    Macho, que nivelazo está cogiendo faqmac últimamente.
  • avatar
    #10 Anónimo el 10/03/2010
    ¿Para eso no está la opción "Establecer orden de servicios..." en el panel de control Red ?

    A lo mejor no he entendido el "conceto".

  • #11 hmolina el 10/03/2010
    Hola,

    Si tienes el script activado y el cable de red conectado, te apagará la interfaz wireless constantemente. (es un ciclo infinito: al encender la red wireless cambias el directorio SystemPreferences, lo cual hace que se ejecute el script y te apague la interfaz....)

    Si agregais al comienzo del script las siguientes lineas:

    if [ -f /var/tmp/autochange_off ]
    then
    exit 0
    fi

    entonces solamente creando el fichero /var/tmp/autochange_off desactivais el funcionamiento del script, sin necesidad de desactivarlo globalmente.


    Para crear el fichero:
    touch /var/tmp/autochange_off

    Borrarlo
    rm /var/tmp/autochange_off

    Done.....
  • #12 metalazo el 10/03/2010
    ... se agradecen los comentarios tan educativos.

    salu2
  • avatar
    #13 Anónimo el 10/03/2010
    El orden de los servicios no "apaga" el wireless, es decir, deja el AirPort activo y por tanto consumiendo energía.

    La foto es un MacBook, por lo que es de entender que la idea es para ahorrar energía.
  • avatar
    #14 Anónimo el 10/03/2010
    Ok en ese caso. Aunque en el enunciado no se habla de "apagar" el wi-fi

    Por cierto ¿cuanto puede consumir el wifi si no se usa?

    Saludos.

Escribe un comentario

Regístrate o identifícate para poder comentar