Acredito que o seu algoritmo simples funcionaria, mas você deve perceber que o roteador nunca saberá ao certo se o computador está realmente desperto ou não. Se a sua automação puder tolerar esse comportamento, você poderá implementá-lo da seguinte maneira.
if ! $pcHasBeenWokenUp;
then
iwinfo wlan0 assoclist | grep $MAC &> /dev/null && wakeUpPc && export pcHasBeenWokenUp=true;
fi
if $pcHasBeenWokenUp;
then
iwinfo wlan0 assoclist | grep -v $MAC &> /dev/null && export pcHasBeenWokenUp=false;
fi
Observe, no entanto, como foi mencionado antes, que um cronjob não pode executar scripts em intervalos de 10 segundos. Você pode, no entanto, enganá-lo, executando um job com uma periodicidade maior, que executa um loop executando sua tarefa em intervalos de 10 segundos (consulte aqui ).
Lembre-se também que esta é uma solução muito hacky, que, no entanto, faz o seu trabalho bem o suficiente. Se, no entanto, você planeja usá-lo como parte de um cenário maior, talvez seja melhor passar para os daemons.