я новичок в shell программировании, прошу помощи в решении следующей задачи:
у меня wakeonlan который включает комп, а дальше мне нужно понять включился-ли он или нет.
первое что приходит в голову - это ping до первого ответа, но не более 60 секунд.
в мане от пинга не нашел того, что хотелось: либо пинговать определенное время, но отвалится при первой ошибка, что не применимо, либо отправить N пакетов и отвалиться, тоже не подходит.
сейчас думаю в сторону
watch ping -c 1 -q 192.168.0.1
но как это все останавливать при наступлении одного из условий (успешный пинг или прошло 60 сек)?
буду благодарен за совет или альтернативную идею

Пользователь решил продолжить мысль 20 Октября 2011, 03:18:25:
погуглил про шелл и написал вот такую скриптину
#!/bin/bash
MAC="МАК:НУЖНОГО:КОМПА"
SEC=90
/usr/bin/wakeonlan $MAC
IP=''
n=0
while [ $n -lt $SEC ]
do
if [ $IP ]
then
ping -c 1 -q -W 1 $IP | grep '0 received'
if [ $? -gt 0 ]
then
echo "Wake OK (completed in $n seconds)"
exit 0
fi
else
sleep 1
echo "Looking for IP in ARP table ($n)"
IP=`arp | grep $MAC | awk '{ print $1 }'`
fi
n=`expr $n + 1`
done
echo "Wake failed (no response within $SEC seconds)"
exit 1
работает великолепно, но как показала практика, 60 секунд мало для загрузки винды, интервал пришлось увеличить до 90
