Дома стоят ветхий сервак (на нём этот блог), домашний комп и ноут.
То и дело появляется необходимость влезть на домашний комп по ssh, для чего его нужно как-то удалённо включить. У меня это можно сделать с сервера (он никогда не вырубается и настроен так, чтобы быть доступным по ssh из нэта). Каждый раз делать всё это ручками лениво, поэтому я автоматизировал процесс с помощью скриптов.
Далее я расскажу о скриптах, которые для этого всего использую.
За включение отвечает скрипт, использующий технологию Wake-on-Lan (WOL):
#!/usr/bin/env ruby
#encoding: ascii-8bit
require 'socket'
class WakeOnLan
attr_accessor :mac
def initialize mac
@mac = mac
end
def send
socket = UDPSocket.new
socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
socket.send(data, 0, '<broadcast>', 9)
end
private
def data
mac_data = @mac.split(':').map!{|i| i.hex.chr}.join
"\xFF"*6 + mac_data*16
end
end
wol = WakeOnLan.new(ARGV[0] || '00:00:00:00:00:00') # тут нужно указать mac-адрес сетевухи компа
wol.send
Скрипт написан на руби. Он посылает широковещательное сообщение с "волшебным пакетом" - специальной последовательностью данных, видя которую комп в сети, чей mac совпадает с указанным, включается.
Для того, чтобы это работало, нужно, чтобы в БИОСе компа WOL был разрешён. Скрипт писался давно, поэтому некрасивый, а я лентяй, не рефакторю.
Далее есть ещё один скрипт (GitHub Gist: renderer), которым я с ноута автоматически врубаю/вырубаю удалённый комп и монтирую/отмонтирую папку с данными с него. Он нормально прокомментирован, там должно быть всё понятно, что и как.
Идея его в том, чтобы одной командой можно было автоматически:
- включить старый комп
- подождать, пока он загрузится
- и тогда примонтировать папку с данными
( а другой командой - отмонтировать папку и вырубить старый комп)
Возможно, позже я добавлю ещё и автоматическое открытие папки с данными, пока не уверен, что это будет всегда нужно
З.Ы.: Да, мы с блогом ещё живы)