다른 WiFi에 연결하는 동안 DNS 설정을 자동으로 전환하는 방법은 무엇입니까?

Aug 17 2020

직장과 집에있을 때 DNS 설정이 완전히 다릅니다. 다른 WiFi에 연결할 때 MacBook Pro의 DNS 설정을 자동으로 변경할 수 있는지 궁금합니다.

검색을 많이했고 네트워크 설정에서 홈이라는 사용자 지정 위치를 만들었습니다. 이 프로필에서 홈 DNS 설정을 지정했습니다. 자동이라는 기본 프로필을 사용하면 컴퓨터가 자동으로 DNS 설정을받을 수 있습니다.

그 후 다음을 통해 DNS 설정을 변경할 수 있습니다.

networksetup -switchtolocation Home

내 요구에 매우 가깝습니다. 하지만 더 똑똑한 방법을 찾을 수 있기를 바랍니다. "홈"이라는 WiFi에 연결하고 자동으로 명령을 실행하면 더 좋은 방법이 될 것입니다.

20200819 업데이트

Hammerspoon 이라는 자동화 도구를 찾았 으므로 명령을 사용하여 다른 위치를 전환하는 단축키를 지정할 수 있습니다.

직접적인 방법을 찾지 못했지만 Hammerspoon은 위대하고 강력합니다. Hammerspoon을 사용하여 Wifi 변경을 보려고했지만 약간의 문제가 남아 있으므로 여기서 문제를 엽니 다.

답변

4 TJLuoma Aug 17 2020 at 23:44

키보드 Maestro 는이 작업을 매우 쉽게 수행 할 수 있습니다.

원하는 SSID 및 위치를 설정하면 원하는 작업을 수행 할 수 있습니다.

3 user3439894 Aug 19 2020 at 01:06

목표를 달성하기 위해 타사 응용 프로그램 을 사용할 필요는 없습니다 .

Wi-Fi네트워크에 연결 되면 무엇 보다도 다음 파일 이 수정됩니다.

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

WatchPaths 와 함께 User Launch Agent 를 사용 하여 대상 파일 이 수정 된 시기를 파악 하고 그에 따라 스크립트를 실행할 수 있습니다 .

다음은 목표를 달성하는 방법의 예이며 SkyNetWi-Fi 네트워크SSID 로 사용하고 있습니다 .

사용하여 networksetup현재 얻기 위해 와이파이 네트워크를 , 다음과 같은 예를 쉘 스크립트 코드를 사용 예로 저장됩니다 /usr/local/bin/detect-wifi-change:

#!/bin/bash

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

예제에서 코드를 할 때 위의 와이파이가 연결되어 스카이 넷 은 단순히의 "스카이 넷에 연결"라고, 당신은 대체 할 것이다 스카이 넷을 에서 $(...)의 부분 명령 대상에 SSID 및 교체 say "connected to skynet" 명령을networksetup -switchtolocation Home 명령 과 같이 당신의 질문.

위해 시작 에이전트 의에 도서관 귀하의 폴더 다음 예제를 사용하십시오로 저장, 예를 들면 ~/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>

구원 후 PLIST의 파일을 , 사용 launchctlload그것을, 예를 들면 :

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

참고 : 와 함께 unload 동사 를 사용 launchctl하여 대상 PLIST 파일 을 언로드 할 수 있습니다 .

지금마다 와이파이 다른 연결 SSID 등이 /usr/local/bin/detect-wifi-change실행되고, 상기 타겟에 접속 된 경우, SSID 명령 은 이후 &&실행된다.


참고 : 위의 예는 스크립트의 두 위치에서 SkyNet 대신 실제 SSID 를 사용하여 macOS High Sierra 에서 테스트 및 작업되었습니다 .


 

관련 문서 :

에서 터미널 , 대신 command다음 중 하나 :

  • launchd
  • launchd.plist
  • launchctl

터미널 에서 메뉴얼 페이지 를 읽을 수 있습니다. 메뉴얼 페이지 를 입력 한 다음 마우스 오른쪽 버튼으로 클릭하고 다음을 선택합니다. Open man Pagecommand command

또한보십시오: