#!/bin/rc # update /who /where using connectivity to laptops and other heuristics. # BUG: location is hardwired. rfork e test -d /who || { echo pctowho: no /who >'#c/cons' ; exit who } fn alive { grep ttl <{ip/ping -n 1 $1 >[2]/dev/null} >/dev/null } machines=(barataria azul frodo bunga 193.147.71.29 193.147.71.7 193.147.71.110 193.147.71.115 193.147.71.103 193.147.71.123 papageno ben) fn m2u { switch($1){ case barataria echo pheras case azul echo eva case frodo echo sarevalo case bunga echo grex case 193.147.71.29 echo pbarrera case 193.147.71.7 echo caguero case 193.147.71.110 echo vmo case 193.147.71.115 echo jcenteno case 193.147.71.103 echo aleonar case 193.147.71.123 echo anto case papageno echo jmplaza case ben echo lrodero case * echo none } } fn u2w { switch($1){ case grex echo 120 case pheras echo 110 case sarevalo echo 133 case eva echo 110 case pbarrera echo 115 case caguero echo 120 case vmo echo 120 case jcenteno echo 111 case aleonar echo 135 case anto echo 133 case papageno echo jmplaza case lrodero echo 111 case * echo none } } while(;) { for (m in $machines){ u=`{m2u $m} w=`{u2w $u} if (alive $m){ sts=online loc=$w own=$u } if not { sts=away loc=none own=none } echo $sts >/who/$u/status echo $loc >/who/$u/where } sleep 60 }