다른 WiFi에 연결하는 동안 DNS 설정을 자동으로 전환하는 방법은 무엇입니까?
직장과 집에있을 때 DNS 설정이 완전히 다릅니다. 다른 WiFi에 연결할 때 MacBook Pro의 DNS 설정을 자동으로 변경할 수 있는지 궁금합니다.
검색을 많이했고 네트워크 설정에서 홈이라는 사용자 지정 위치를 만들었습니다. 이 프로필에서 홈 DNS 설정을 지정했습니다. 자동이라는 기본 프로필을 사용하면 컴퓨터가 자동으로 DNS 설정을받을 수 있습니다.
그 후 다음을 통해 DNS 설정을 변경할 수 있습니다.
networksetup -switchtolocation Home
내 요구에 매우 가깝습니다. 하지만 더 똑똑한 방법을 찾을 수 있기를 바랍니다. "홈"이라는 WiFi에 연결하고 자동으로 명령을 실행하면 더 좋은 방법이 될 것입니다.
20200819 업데이트
Hammerspoon 이라는 자동화 도구를 찾았 으므로 명령을 사용하여 다른 위치를 전환하는 단축키를 지정할 수 있습니다.
직접적인 방법을 찾지 못했지만 Hammerspoon은 위대하고 강력합니다. Hammerspoon을 사용하여 Wifi 변경을 보려고했지만 약간의 문제가 남아 있으므로 여기서 문제를 엽니 다.
답변
목표를 달성하기 위해 타사 응용 프로그램 을 사용할 필요는 없습니다 .
Wi-Fi 가 네트워크에 연결 되면 무엇 보다도 다음 파일 이 수정됩니다.
/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
WatchPaths 키 와 함께 User Launch Agent 를 사용 하여 대상 파일 이 수정 된 시기를 파악 하고 그에 따라 스크립트를 실행할 수 있습니다 .
다음은 목표를 달성하는 방법의 예이며 SkyNet 을 Wi-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의 파일을 , 사용 launchctl
에 load
그것을, 예를 들면 :
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
또한보십시오: