विभिन्न वाईफाई से कनेक्ट करते समय DNS सेटिंग्स को ऑटो स्विच कैसे करें?

Aug 17 2020

जब मैं काम पर होता हूं और जब मैं घर पर होता हूं तो मेरे पास पूरी तरह से अलग डीएनएस सेटिंग्स होती हैं। मैं सोच रहा था कि मैं अपने मैकबुक प्रो की डीएनएस सेटिंग्स को स्वचालित रूप से बदल सकता हूं जब मैं अलग-अलग वाईफाई से कनेक्ट करता हूं।

मैंने बहुत सी खोजें कीं, मैंने नेटवर्क सेटिंग्स में होम नामक एक कस्टम स्थान बनाया। और मैंने इस प्रोफ़ाइल के तहत अपनी होम DNS सेटिंग्स सेट की हैं। और एक डिफ़ॉल्ट प्रोफ़ाइल जिसे स्वचालित कहा जाता है, कंप्यूटर को स्वचालित रूप से DNS सेटिंग्स प्राप्त करने देता है।

उसके बाद, मैं अपनी DNS सेटिंग्स बदल सकता हूं:

networksetup -switchtolocation Home

यह मेरी मांग के बहुत करीब है। लेकिन मुझे उम्मीद है कि मैं एक बेहतर तरीका पा सकता हूं, अगर मैं एक विधि का पता लगाता हूं यदि मैं "होम" नामक एक वाईफाई से कनेक्ट करता हूं, और फिर स्वचालित रूप से कमांड निष्पादित करता है, तो यह उत्कृष्ट होगा।

20200819 अपडेट करें

मुझे हेमरस्पून नामक एक स्वचालन उपकरण मिलता है , इसलिए मैं कमांड का उपयोग करके विभिन्न स्थानों को स्विच करने के लिए एक शॉर्टकट असाइन कर सकता हूं।

हालांकि मुझे सीधा रास्ता नहीं मिला, लेकिन हैमरस्पून महान और शक्तिशाली है। मैंने हैमरस्पून का उपयोग करके वाईफ़ाई परिवर्तन देखने की कोशिश की, लेकिन यह थोड़ी समस्या बनी हुई है, इसलिए मैं यहां एक मुद्दा खोलता हूं

जवाब

4 TJLuoma Aug 17 2020 at 23:44

कीबोर्ड मेस्ट्रो यह बहुत आसानी से कर सकता है:

SSID और वह स्थान सेट करें जो आप चाहते हैं, और जो आपको चाहिए वह करना चाहिए।

3 user3439894 Aug 19 2020 at 01:06

अपने लक्ष्य को पूरा करने के लिए आपको तीसरे पक्ष के आवेदन का उपयोग करने की आवश्यकता नहीं है ।

जब वाई-फाई एक नेटवर्क से कनेक्ट होता है , तो अन्य लोगों के बीच निम्न फ़ाइल संशोधित होती है:

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

जब लक्ष्य फ़ाइल को संशोधित किया जाता है और तब आप अपनी स्क्रिप्ट को तदनुसार निष्पादित करते हैं, यह जानने के लिए आप वॉचपैथ कुंजी के साथ एक उपयोगकर्ता लॉन्च एजेंट का उपयोग कर सकते हैं ।

निम्नलिखित कैसे लक्ष्य को पूरा करने का एक उदाहरण है और उपयोग कर रहा है स्काईनेट के रूप में 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 आदेश के बाद &&मार डाला जाता है।


नोट: उपरोक्त उदाहरण का परीक्षण किया गया था और स्क्रिप्ट में दोनों स्थानों पर स्काईनेट के स्थान पर मेरे वास्तविक एसएसआईडी का उपयोग करके macOS हाई सिएरा के तहत काम किया गया था ।


 

संबंधित प्रलेखन:

में टर्मिनल , विकल्प commandनिम्न में से एक के लिए:

  • launchd
  • launchd.plist
  • launchctl

आप पढ़ सकते हैं मैन्युअल पृष्ठ के लिए command में टर्मिनल टाइपिंग द्वारा commandऔर उसके बाद उस पर राइट क्लिक करें और चुनें: आदमी पृष्ठ ओपन

यह सभी देखें:

  • एक लॉन्च ट्यूटोरियल
  • Daemons and Services प्रोग्रामिंग गाइड
  • तकनीकी नोट TN2083 डेमॉन और एजेंट