4 votos

¿Cómo cambiar automáticamente la configuración de DNS mientras se conecta a diferentes WiFi?

Tengo una configuración de DNS totalmente diferente cuando estoy en el trabajo y cuando estoy en casa. Me preguntaba si puedo cambiar la configuración de DNS de mi MacBook Pro automáticamente cuando me conecto a diferentes WiFi.

Hice un montón de búsquedas, hice una ubicación personalizada llamada Home en la configuración de la red. Y establecí mi configuración de DNS de casa bajo este perfil. Y un perfil por defecto llamado Automático dejé que el ordenador obtuviera automáticamente la configuración de DNS.

Después de eso, puedo cambiar mi configuración de DNS a través de:

networksetup -switchtolocation Home

Está muy cerca de mi demanda. Pero espero que pueda encontrar una manera más inteligente, Si descubro un método Si me conecto a un WiFi llamado "Inicio", y luego ejecutar el comando automáticamente, Será excelente.

20200819 Actualización

Encuentro una herramienta de automatización llamada Cuchara de martillo para que pueda asignar un acceso directo para cambiar las diferentes ubicaciones utilizando el comando.

Aunque no encontré una forma directa, pero Hammerspoon es genial y potente. Traté de ver el cambio de Wifi usando Hammerspoon, pero sigue siendo un pequeño problema, así que abro un tema aquí

5voto

user3439894 Puntos 5883

No es necesario utilizar un tercero aplicación para lograr su objetivo.

Cuando Wi-Fi se conecta a un red lo siguiente archivo , entre otros, se modifica:

/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist

Puede utilizar un Usuario Agente de lanzamiento con un WatchPaths clave para saber cuándo el objetivo archivo se modifica y ejecuta su script en consecuencia.

El siguiente es un ejemplo de cómo lograr el objetivo y está utilizando SkyNet como el SSID de la Wi-Fi red .

Utilizando networksetup para obtener el Wi-Fi red , lo siguiente ejemplo shell script código se utiliza y se guarda como por ejemplo /usr/local/bin/detect-wifi-change :

#!/bin/bash

[[ $(networksetup -getairportnetwork en0) == "Current Wi-Fi Network: SkyNet" ]] && say "connected to skynet"

En el ejemplo código arriba, cuando Wi-Fi está conectado a SkyNet simplemente dice que está "conectada a Skynet", y usted reemplazaría SkyNet en el $(...) parte de la comando con su objetivo SSID y sustituir el say "connected to skynet" comando con el networksetup -switchtolocation Home comando como se muestra en su pregunta.

Para el Agente de lanzamiento en el Biblioteca de su Inicio carpeta utilizarías el siguiente ejemplo, guardado como, por ejemplo ~/Library/LaunchAgents/com.my.detect.wifi.change.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
        <string>com.my.detect.wifi.change</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/usr/local/bin/detect-wifi-change</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
    </array>
</dict>
</plist>

Después de guardar el PLISTAS archivo Utilizar launchctl a load por ejemplo:

launchctl load ~/Library/LaunchAgents/com.my.detect.wifi.change.plist

Nota: Puede utilizar el unload verbo con launchctl para descargar el objetivo PLISTAS archivo .

Ahora bien, siempre que Wi-Fi se conecta a otro SSID por ejemplo /usr/local/bin/detect-wifi-change se ejecuta y si se conecta al objetivo SSID el comando después de la && se ejecuta.


Nota: El ejemplo anterior fue probado y funcionó bajo MacOS High Sierra usando mi actual SSID en lugar de SkyNet en ambos lugares de la script .


Documentación relacionada:

En Terminal , sustituto command por uno de los siguientes:

  • launchd
  • launchd.plist
  • launchctl

Puede leer el página del manual para command en Terminal tecleando command y luego haga clic con el botón derecho del ratón y seleccione: Abrir la página del hombre

Véase también:

4voto

moodforaday Puntos 2633

Maestro del teclado puede hacerlo muy fácilmente:

Screenshot of Keyboard Maestro

Establece el SSID y la ubicación que quieras, y eso debería hacer lo que quieres.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X