Czy system Mac OS X można skonfigurować tak, aby automatycznie konfigurował interfejs lotniska ze statycznym adresem IP po podłączeniu do sieci Wi-Fi o określonej nazwie i we wszystkich innych sieciach Wi-Fi korzystających z DHCP?
Obecnie używam funkcji „Lokalizacje” sekcji „Sieć” w Preferencjach systemowych, aby ręcznie przełączać się między dwoma ustawieniami adresów IP. Mam konfigurację „mój statyczny adres IP” i domyślną konfigurację „DHCP”. Wymaga to jednak wprowadzenia Preferencji systemowych, aby zmienić menu rozwijane Lokalizacja za każdym razem podczas zmiany lokalizacji. Czy można to zautomatyzować?
Najlepiej byłoby to zrobić bez oprogramowania innych firm.
źródło
Można to zrobić bez jakiejkolwiek strony trzeciej, patrz https://github.com/rimar/wifi-location-changer
źródło
Zewnętrzne, niewolne rozwiązanie, które prawdopodobnie zadziałałoby dla Ciebie, to Lokalizacje .
Jak sugeruje ta odpowiedź na podobne, ale nie identyczne pytanie dotyczące przepływu stosu, możesz utworzyć skrypt, który będzie działał w regularnych odstępach czasu.
launchd
zapobiegnie uruchomieniu go więcej niż raz.Psuedocode:
networksetup -getairportnetwork AirPort
networksetup -switchtolocation {location}
razie uruchom gdzie {lokalizacja} to nazwa lokalizacji, na którą chcesz się przełączyć w zależności od znalezionej sieci Wi-Fi.Może występować sytuacja z kurczakiem i jajkiem w przypadku połączenia z lokalnym Wi-Fi, które nie zapewnia adresu DHCP, gdy jesteś skonfigurowany tak, aby oczekiwać adresu od DHCP.
-
Aktualizacja: znaleziono możliwe duplikat pytania, które sugeruje rozwiązanie typu open source: MarcoPolo
źródło
Ponieważ podana odpowiedź jest ręczna, oto prosty skrypt, który zmienia ją automatycznie:
Utwórz różne lokalizacje w Preferencjach systemowych> Sieć, aby odzwierciedlić każdą z twoich sieci Wi-Fi.
Skrypt: (
/usr/bin/autolocation.sh
) Umieść to w preferowanym miejscu i zmień wartości SSID w skrypcie zgodnie ze scenariuszem.Ten skrypt zmieni lokalizację sieci (ustawienia) na podstawie SSID sieci bezprzewodowej. Teraz należy to uruchamiać za każdym razem, gdy nastąpi zmiana ustawień sieci. Stworzymy uruchomionego agenta, aby zrobił to samo.
launchd plist: (
~/Library/LaunchAgents/com.vg.netwatcher.plist
)Utworzyłem ten plik w
~/Library/LaunchAgents
(w moim katalogu domowym), ponieważ jestem jedynym użytkownikiem używającym tego komputera. Jeśli chcesz, aby był globalny, włóż go/Library/LaunchAgents
.Ten plik musi być własnością
root
i mieć600
uprawnienia:Po wylogowaniu / zalogowaniu się lub ponownym uruchomieniu systemu agent uruchomieniowy zacznie działać w zależności od tego, gdzie umieściłeś plik (katalog domowy lub globalny). Ale jeśli nie chcesz tego robić i chcesz, aby załadował się teraz, uruchom następujące polecenie w wierszu polecenia. Musisz to zrobić tylko raz.
Otóż to. Teraz adres IP twojego Maca zmieni się automatycznie.
Uwaga: działa również na El Capitan!
źródło
Przedstawiamy zmieniacz lokalizacji
Oto bardzo obiecujący skrypt do zmiany lokalizacji sieci w oparciu o SSID Wi-Fi:
Tworzy go Anton Eprev . Możesz wyświetlić kod i bardziej szczegółową dokumentację na GitHub:
Instalacja
Instaluje się za pomocą wiersza polecenia:
Poprosi Cię o hasło roota, aby zainstalować
locationchanger
w/usr/local/bin
katalogu.Otóż to!
Następnie, jeśli istnieje lokalizacja sieciowa, której nazwa jest identyczna z nazwą (SSID) bieżącej sieci Wi-Fi , automatycznie przełączy się na lokalizację sieciową. W przeciwnym razie przełączy się na Automatyczną lokalizację. (BTW, jeśli nie ma lokalizacji o nazwie Automatyczna , narzeka na dzienniki i wychodzi).
Skrypt specyficzny dla lokalizacji
Jeśli chcesz uruchomić skrypt za każdym razem, gdy łączysz się z określoną siecią Wi-Fi, włóż te skrypty
~/.locations
i nazwij je po sieciach Wi-Fi, np .~/.locations/Corp Wi-Fi
:I możesz chcieć utworzyć
~/.locations/Automatic
, który zresetuje te zmiany w innych lokalizacjach:Pamiętaj, aby rzutować bity wykonania na skrypty (
chmod +x
).Aliasy lokalizacji
Możesz udostępnić lokalizację sieciową wielu sieciom WiFi. Na przykład, jeśli masz router bezprzewodowy, który nadaje jednocześnie w paśmie 2,4 i 5 GHz, możesz utworzyć plik konfiguracyjny
~/.locations/locations.conf
i umieścić w nim proste pary klucz-wartość:Tutaj klucze są nazwami sieci Wi-Fi , a wartości są odpowiednimi lokalizacjami sieci . Połącz je z czystymi znakami równości (
=
bez spacji). W powyższym przykładzie, jeśli podłączona jest sieć WiFi Home_WiFi_5GHz , przełączy się na lokalizację sieci Home_WiFi .Zauważ, że aliasy lokalizacji mają pierwszeństwo przed regułą o tej samej nazwie. W powyższym przykładzie tylko skrypt
~/.locations/Home_WiFi
zostanie uruchomiony po połączeniu z siecią Wi-Fi Home_WiFi_5GHz .Dzięki aliasom lokalizacji nie trzeba nawet tworzyć dodatkowych lokalizacji sieciowych dla pasujących nazw sieci Wi-Fi.
Rozwiązywanie problemów
Możesz przeglądać obszerne dzienniki za pomocą następującego polecenia:
Przykładowe dane wyjściowe:
Odinstalowanie
Najpierw zwolnij agenta uruchamiania:
Następnie usuń plik binarny, plist i plik dziennika:
Możesz również usunąć pliki konfiguracyjne i skrypty specyficzne dla lokalizacji
~/.locations
:źródło