Включаємо комп'ютер по мережі - aleksandr - ru

Технологія Wake-on-LAN відома давно, але застосовується не часто. У моєму випадку постало завдання включати домашній комп'ютер з офісу. Здавалося б все просто, але потрібно не тільки включити, але і зрозуміти включився-ли він в автоматичному режимі. Загалом ситуація відображена на схемі:







З віддаленого комп'ютера у мене є доступ по SSH до мого домашнього сервера, який постійно включений. З цього сервера буде відправлятися команда на включення сусіднього комп'ютера. Все виглядає цілком просто, поки мова не заходить про перевірку, включився комп'ютер чи ні силами того, хто його намагався включити. Але про все по порядку.

Wake-on-LAN

На керованому комп'ютері повинна бути апаратна підтримка (ну це є у всіх сучасних плат і мережевих карт), ідеальним випадком є ​​комп'ютер з вбудованою мережевої. Можливість включення по мережі потрібно дозволити в Біосе в розділі Power Management. Пункт зазвичай називається Wake-On-Lan from Soft-off або Resume by MAC. потрібно поставити Enabled.

Включаємо комп'ютер по мережі - aleksandr - ru

Також (особливо якщо сетвуха невбудованої) можна поколупатися в додаткових параметрах мережевої через ОС. У Windows заходимо в диспетчер пристроїв. там знаходимо потрібний мережний адаптер, заходимо в властивості і на вкладці додатково дозволяємо Wake-On-Lan.

Включаємо комп'ютер по мережі - aleksandr - ru






У разі UNIX-подібної ОС ethtool і гугль в допомогу;)

Керуючий (будить;) скрипт

Оскільки команда на включення буде даватися з сервера під управлінням Linux (Ubuntu), то розповідь далі піде про Linux. У разі Windows існує маса інструментів для включення сусідніх комп'ютерів, як у них йдуть справи з перевіркою включеності - не знаю. Також звертаю увагу, що обидва комп'ютера знаходяться в одному сегменті мережі.

Для початку знадобиться інструмент для включення по мережі - він так і називається wakeonlan.

apt-get install wakeonlan

Тепер якщо в консолі сказати

він відправить magic packet і комп'ютер увімкнеться. Якщо МАК не відомий, то допоможе команда arp.

Теоретично, після відправки magic packet, цільовий комп'ютер включається, завантажується і все проходить успішно. На практиці все виглядає трохи інакше: якщо був тривалий перебій в харчуванні у включається комп'ютера, то він може і не зреагувати на команду wake-on-lan, або він може бути просто відключений від мережі, або може включитися, але не завантажитися і ще маса чого іншого. Саме з цього і потрібно мати розуміння про те, що відбувається після відправки команди на включення.

Ідея методу визначення включився-комп'ютер полягає в наступному: ми відправляємо magic packet і потім пінгуем цільової комп. Якщо отримуємо відповідь на пінг - вважаємо, що все пройшло успішно. Якщо протягом 90 секунд (приблизно стільки йшло на завантаження в моєму випадку) відповіді не отримано - то вирішуємо, що включити не вдалося.

Для реалізації методу мною був написаний скрипт, який знає МАК включається компа, відправляє йому magic packet, далі протягом 90 секунд намагається знайти IP а ARP таблиці і пінгувати його. Вийшло ось так

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 '' `
fi
n = `expr $ n + 1 '
done
echo "Wake failed (no response within $ SEC seconds)"
exit 1

Цей скрипт виводь на екран цілком читаються дані про свої дії та результати. Для мене це стало зручним інструментом.







Схожі статті