Kaip neleisti „Mac“ jungtis prie bet kokių WiFi tinklų
Daug kompiuterių naudotojų, ypač nešiojamų, susiduria su problema, kai kompiuteris automatiškai prisijungia prie ne to WiFi tinklo.
Problema kai kompiuteris prisijungia ne prie to WiFi tinklo žinoma tiek įmonių darbuotojams, tiek ir kompiuterių naudotojams namuose. Neretai IT departamento atstovas, keiksnodamas eina „taisyti neveikiančio kompiuterio“, kurio neveikimo priežastis yra ta, kad kompiuteris automatiškai prisijungė prie įmonės svečiams skirto bevielio tinklo iš kurio nepasiekiamos įmonės sistemos ir serveriai.
Su šia problema susidurti gali ir paprasti vartotojai naudojantys kompiuterius namuose. Ypač dažnai su tuo susidurti gali nešiojamų kompiuterių savininkai, kai pernešus kompiuterį į kitą kambarį, kai turimo maršrutizatoriaus signalas tampa labai silpnas – kompiuteris prisijungia prie kaimyno WiFi.
„Mac“ kompiuterių savininkams, turintiems ir „iPhone“ ar „iPad“ čia nepatogumai nesibaigia. Jei naudojama „iCloud Keychain“ funkcija sinchronizuojanti slaptažodžius tarp turimų „Apple“ įrenginių, tame tarpe ir WiFi prisijungimų informaciją – „Mac“ prisijungus prie „kaimyno“ tinklo, ta informacija perduodama ir į „iPhone“ ar „iPad“, ir tokiu atveju šis gali pradėti elgtis panašiai. Neretai prie „kaimyninių“ tinklų, taip patekdami į potencialiai nesaugų tinklą, prisijungia jaunieji kompiuterių naudotojai ar iš smalsumo, ar tada kai namų maršrutizatoriuje suveikia „Parental Control“ ir jų laikas skirtas naršymui internete baigiasi.
Yra keli šios problemos sprendimo būdai skirti „OS X“ naudotojams, priklausomai nuo to kaip ją norite spręsti: neleisti „Mac“ kompiuterio „OS X“ sistemoje keisti WiFi tinklo ar drausti prisijungti prie tam tikrų WiFi tinklų.
Pirmasis būdas
Geriausias būdas kompiuteriui, kuris jungiasi prie vieno WiFi tinklo yra neleisti jungtis prie kitų tinklų ir jei to prisireikia – reikalauti administratoriaus slaptažodžio.
Taigi, norint įgalinti šį būdą, tas kas žino kompiuterio administratoriaus slaptažodį, prisijungia prie reikiamo WiFi tinklo ir atidaręs Terminal aplikaciją įvedą žemiau esančią komandą:
sudo /usr/libexec/airportd prefs RequireAdminNetworkChange=YES RequireAdminIBSS=YES
Jei kartais reikia, kad kompiuterio administratoriaus slaptažodis būtų prašomas ir norint atjungti WiFi kompiuteryje, tada aukščiau pateiktą komandą galima papildyti raktu „RequireAdminPowerToggle“ su reikšme „YES“. Tokiu atveju pilna komanda atrodo taip:
sudo /usr/libexec/airportd prefs RequireAdminIBSS=YES RequireAdminNetworkChange=YES RequireAdminPowerToggle=YES
Atminkite, kad naudojant „sudo“ reikės „Terminal“ aplikacijoje įrašyti kompiuterio administratoriaus slaptažodį, kurį rašant nesimatys jog rašote, tad būkite dėmesingi.
Antrasis būdas
Šis būdas reikalauja daugiau žinių ir supratimo. Žemiau pateiktame Shell skripte patikrinama prie kokio WiFi tinklo SSID jungiasi „Mac“ ir jei prie to, kuris yra draudžiamų sąraše - išjungiamas kompiuterio WiFi. Žinoma, kad šis skriptas veiktų visada, jį reikėtų paleisti taip, kad jis suveiktų kaskart kai iššaukiamas „Network State Change“ event’as. Tai padaryti yra eilė būdų ar per „policy“, ar per kokias nors papildomas aplikacijas, tokias kaip „crankd“, „Lingon“, „LaunchControl“ ir t.t., tačiau kadangi tai labiau IT administratoriams ar „power useriams“ skirtas būdas nesileisiu į detales, nes kiekvienas geriau žino kokius metodus jis naudoja.
#/bin/sh #-- Gauname WiFi SSID SSID=`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I\ | grep ' SSID:' | cut -d ':' -f 2 | tr -d ' '` #-- Gauname WiFi prievadą whwport=`networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/,/AirPort/' | awk 'NR==2' | cut -d " " -f 2` #-- Jei jungiamasi prie uždrausto WiFi - išjungiame kompiuterio WiFi ir rodome pranešimą if [[ $SSID = "Kaimyno1_WiFi" || "Kaimyno2_WiFi" || "Kaimyno3_WiFi" || "Svečių_WiFi" || "KitasWiFi" || "dlink" ]]; then /usr/sbin/networksetup -setairportpower $whwport off osascript -e 'tell application "System Events" to display alert "Prie \"'$SSID'\" jungtis draudžiama. Kreipkitės į kompiuterio administratorių." as critical' fi
Žemiau kelios komandos, kurios gali būti naudingos modifikuojant aukščiau esantį „shell“ skriptą ir pritaikant jį savo poreikiams.
Prie kompiuterio prisijungusio vartotojo vardas
consoleuser=`ls -l /dev/console | cut -d " " -f4` echo "Vartotojas: $consoleuser"
Belaidžio tinklo paslaugos pavadinimas:
wservice=`/usr/sbin/networksetup -listallnetworkservices | grep -E '(Wi-Fi|AirPort)'` echo "WiFi paslauga: $wservice"
Belaidžio tinklo pavadinimas:
wirelessnw=`networksetup -getairportnetwork $hwports | cut -d " " -f 4` echo "WiFi tinklas: $wirelessnw"
Belaidžio tinklo prievadas:
whwport=`networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/,/AirPort/' | awk 'NR==2' | cut -d " " -f 2` echo "WiFi prievadas: $whwport"
Ethernet prievadas:
ehwport=`networksetup -listallhardwareports | awk '/.Ethernet/,/Ethernet Address/' | awk 'NR==2' | cut -d " " -f 2` echo "Ethernet: $ehwport"
Patikriname ar įjungtas Ethernet’as ir jei taip - atjungiame WiFi bei išvalome DNS kešą dėl kurio gali kilti problemų perjungiant tinklus (šeštoje skripto eilutėje) ir toliau, jei Ethernetas išjungtas reikia įjungti WiFi :
ehwport=`networksetup -listallhardwareports | awk '/.Ethernet/,/Ethernet Address/' | awk 'NR==2' | cut -d " " -f 2` whwport=`networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/,/AirPort/' | awk 'NR==2' | cut -d " " -f 2` wservice=`/usr/sbin/networksetup -listallnetworkservices | grep -E '(Wi-Fi|AirPort)'` if ifconfig $ehwport | grep inet; then /usr/sbin/networksetup -setairportpower $whwport off /usr/sbin/networksetup -setdnsservers $wservice "empty" fi elif ifconfig $ehwport | grep inactive; then /usr/sbin/networksetup -setdnsservers $wservice "empty" /usr/sbin/networksetup -setairportpower $whwport on fi