¿Cómo detectar cambios en la red (desconectar/conectar cable)?

He leído en varios lugares que /Library/Preferences/SystemConfigurationse supone que la carpeta "cambiará" en caso de que desconecte un cable de red.

Ahora, tengo una MacBook Pro, así que uso un adaptador USB3 para conectar un cable de red.

De hecho, nada cambia cuando lo conecto o desconecto dentro de esta carpeta. Veo claramente en "Configuración de red" que la conexión LAN se establece o se interrumpe cuando conecto o desconecto el cable.

¿Dónde debería cambiar algo? ¿Hay alguna carpeta o cualquier otra cosa que pueda usar como activador de AppleScript al conectar/desconectar el cable de red?

¿Qué estás tratando de hacer exactamente cuando esto ocurre? ¿Estás tratando de programar una capacidad para encender tu wifi? Lo he escrito en el pasado con bash, pero no debería ser difícil hacerlo en AppleScript.
La pregunta de @ʀ2ᴅ2 es, ¿CÓMO puedo iniciar AppleScript cuando el cable de red está (des)enchufado?
No hay ningún archivo que se escriba cuando activa o desactiva una interfaz de red. Este es un estado que manejan los kexts de red. Para ver esto en acción, use Terminal y escriba sudo dmesg. Luego desconecte su red. sudo dmesgde nuevo para ver para ver el evento de desconexión. Vuelva a conectarlo una y sudo dmesgotra vez para ver el mensaje de conexión. En cuanto a obtener acceso a esto mediante programación, no creo que AppleScript tenga esta capacidad.

Respuestas (3)

Este proyecto en Github hace lo que estás buscando: mira allí para ver cómo lo está haciendo. https://github.com/paulbhart/toggleairport

Observa estos tres archivos para determinar que el estado de la red ha cambiado:

  • /private/var/run/resolv.conf
  • /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
  • /Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist

El propósito de su proyecto es apagar WiFi si la LAN está conectada y volver a encenderlo si la LAN está desconectada.

Guarde este script como una aplicación y configúrelo para que se ejecute al inicio. Usará algo de memoria, pero el script es muy ligero. Puedes retrasar aún más. Tenga en cuenta que esta rutina seguirá detectando el cable para siempre, por lo que debe establecer otras condiciones dentro de su secuencia de comandos para hacer lo que necesita y detenerse hasta que algo cambie.


on run {input}
    repeat
        set input to do shell script "ifconfig -a" as text
        set status to offset of "status:" in input
        set the_starting_point to status + 0
        set the_ending_point to status + 13
        set isCableConnected to characters the_starting_point thru the_ending_point of input as string
        if isCableConnected is "status: active" then
            display dialog "Ethernet On"
        else
            display dialog "Cable Unplugged"
        end if
        delay 1
    end repeat
end run

¿Un bucle sin fin de fondo?
Sí. Necesita algo para seguir el estado del cable.
A menos que elimine la repetición y use un atajo o algún otro disparador.

Tal vez pueda usar un atajo para activar su script ya que ya está conectando el cable de todos modos. Simplemente cree un nuevo Servicio para el buscador usando Automator, arrastre una acción Ejecutar Applescript al flujo de trabajo, coloque su código dentro, guárdelo y establezca un acceso directo en Preferencias/Teclado/Accesos directos/Servicios.

Me gustaría ejecutar un script de este tipo cuando el cable de red esté (des)conectado. Mi pregunta es cómo reaccionar ante este evento, no cómo escribir el guión.