Bagaimana cara mengganti pengaturan DNS secara otomatis saat terhubung ke WiFi yang berbeda?
Saya memiliki pengaturan DNS yang sangat berbeda ketika saya sedang bekerja dan ketika saya di rumah. Saya bertanya-tanya apakah saya dapat mengubah pengaturan DNS MacBook Pro saya secara otomatis ketika saya terhubung ke WiFi yang berbeda.
Saya melakukan banyak pencarian, saya membuat Lokasi khusus yang disebut Rumah di pengaturan jaringan. Dan saya mengatur pengaturan DNS Rumah saya di bawah profil ini. Dan profil default yang disebut Otomatis Saya membiarkan komputer secara otomatis mendapatkan pengaturan DNS.
Setelah itu, saya dapat mengubah pengaturan DNS saya melalui:
networksetup -switchtolocation Home
Itu sangat dekat dengan permintaan saya. Tapi saya harap saya dapat menemukan cara yang lebih cerdas, Jika saya menemukan metode Jika saya terhubung ke WiFi yang disebut "Rumah", dan kemudian menjalankan perintah secara otomatis, Ini akan menjadi luar biasa.
Pembaruan 20200819
Saya menemukan alat otomatisasi yang disebut Hammerspoon , jadi saya dapat menetapkan pintasan untuk beralih Lokasi yang berbeda menggunakan perintah.
Meskipun saya tidak menemukan cara langsung, tetapi Hammerspoon sangat bagus dan kuat. Saya mencoba menonton perubahan Wifi menggunakan Hammerspoon, tetapi tetap ada masalah kecil, jadi saya membuka masalah di sini
Jawaban
Keyboard Maestro dapat melakukan ini dengan sangat mudah:

Atur SSID dan Lokasi yang Anda inginkan, dan itu akan melakukan apa yang Anda inginkan.
Anda tidak perlu menggunakan aplikasi pihak ketiga untuk mencapai tujuan Anda.
Ketika Wi-Fi terhubung ke jaringan , file berikut ini , antara lain, diubah:
/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
Anda dapat menggunakan Agen Peluncuran Pengguna dengan kunci WatchPaths untuk mengetahui kapan file target diubah dan menjalankan skrip Anda sesuai dengan itu.
Berikut ini adalah contoh bagaimana untuk mencapai tujuan dan menggunakan Skynet sebagai SSID dari Wi-Fi jaringan .
Menggunakan networksetup
untuk mendapatkan arus Wi-Fi jaringan , berikut contoh shell script kode digunakan dan disimpan sebagai misalnya /usr/local/bin/detect-wifi-change
:
#!/bin/bash
[[ $(networksetup -getairportnetwork en0) == "Current Wi-Fi Network: SkyNet" ]] && say "connected to skynet"
Dalam kode contoh di atas, ketika Wi-Fi terhubung ke SkyNet, ia hanya mengatakan "terhubung ke skynet", dan Anda akan mengganti SkyNet di $(...)
bagian perintah dengan SSID target Anda , dan mengganti say "connected to skynet"
perintah dengan networksetup -switchtolocation Home
perintah seperti yang ditunjukkan di pertanyaanmu.
Untuk Agen Launch , di Perpustakaan dari Anda Rumah folder Anda akan menggunakan contoh berikut, disimpan sebagai, misalnya, ~/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>
Setelah menyimpan file PLIST , gunakan untuk itu, misalnya:launchctl
load
launchctl load ~/Library/LaunchAgents/com.my.detect.wifi.change.plist
Catatan: Anda dapat menggunakan unload
kata kerja dengan launchctl
untuk membongkar file PLIST target .
Sekarang setiap kali Wi-Fi terhubung ke SSID yang berbeda , misalnya /usr/local/bin/detect-wifi-change
dijalankan dan jika terhubung ke SSID target , perintah setelah &&
dijalankan.
Catatan: Contoh di atas telah diuji dan bekerja di bawah macOS High Sierra menggunakan SSID saya yang sebenarnya sebagai pengganti SkyNet di kedua tempat di skrip .
Dokumentasi Terkait:
Di Terminal , gantikan command
salah satu dari berikut ini:
launchd
launchd.plist
launchctl
Anda dapat membaca halaman manual untuk command
di Terminal dengan mengetik command
dan kemudian klik kanan padanya dan pilih: Buka Halaman manual
Lihat juga: