MacBook Pro v doku ali kako izklopiti AirPort
Henge Dock sem si omislil, ker je MBP postal moja glavna in hkrati prenosna mašina. Pred tem sem imel na mizi TwelveSouth Arc, da je MBP, in pred tem MB, na mizi stal pokonci. Motilo me je predvsem pretikanje kablov in zato meka nisem nikoli priklopil na ethernet. S Henge Dockom, ki ima vse kable fiksirane v dok, pa se je to spremenilo in tako je bil mek vedno priključen tudi na ethernet.
Ker sem že pred tem poskrbel, da je bil vrstni red mrežnih povezav tak, da je vse šlo po kablu, če je le ta bil vklopljen, s tem ni bilo težav. Vendar pa me moja hekerska žilica ni in ni hotela pustiti pri miru in me je začelo zanimati ali se morda da kako izklopiti AirPort, ko je moj mek priključen na domače žično omrežje. In se da!
Potrebni sta dve stvari: skripta, ki izklopi AirPort, in launchd plist, ki pove, kdaj se skripta proži.
Skripta mora seveda ugotoviti ali je računalnik na domačem omrežju in ali je potrebno AirPort vklopiti ali izklopiti. Izkaže se, da je skripta dokaj enostavna:
#!/bin/bash
ETHERNET_INTERFACE="en0"
AIRPORT_INTERFACE="en1"
COMPANY_NETWORK="192.168.1"
sleep 5
currentNetwork=$(ifconfig ${ETHERNET_INTERFACE} | awk '{ if ( $1 == "inet" ) print $2 }' | cut -d '.' -f 1-3)
currentAirPortPower=$(networksetup -getairportpower ${AIRPORT_INTERFACE} | awk '{ print $NF }')
if [ "${currentNetwork}" == "${COMPANY_NETWORK}" -a "${currentAirPortPower}" == "On" ]; then
networksetup -setairportpower ${AIRPORT_INTERFACE} off
elif [ "${currentNetwork}" != "${COMPANY_NETWORK}" -a "${currentAirPortPower}" == "Off" ]; then
networksetup -setairportpower ${AIRPORT_INTERFACE} on
fi
Drugi del pa zahteva malce več znanja. No, s pomočjo programa Lingon, niti ne.
Lingon nam omogoča, da s pomočjo grafičnega vmesnika zgradimo plist, ki ga hkrati dodamo med launchd procese. launchd je nekaj podobnega kot task scheduler (vendar ne cron), ki proži procese glede na pogoje. Za potrebe aktiviranja/deaktiviranja AirPorta je dovolj, da spremljamo mapo /Library/Preferences/SystemConfiguration, ki se spremeni vsakič, ko se spremenijo nastavitve sistema (med drugim tudi mrežne nastavitve).
Ko je tudi to nastavljeno, se 5s po vklopu kabla v domačem omrežju AirPort izklopi in tako računalnik deluje samo po žični povezavi. Če ethernet kabel vklopim v kakem drugem omrežju AirPort (p)ostane aktiven.
Za moje potrebe odlična rešitev in deluje kot namazana.