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: