Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: [решено] Помогите написать скрипт для Wake-On-Lan  (Прочитано 1721 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Aleksandr.ru

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
    • Aleksandr.ru
я новичок в 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 :)
« Последнее редактирование: 20 Октября 2011, 03:19:09 от Aleksandr.ru »

 

Страница сгенерирована за 0.015 секунд. Запросов: 22.