Wake On LAN
という機能があります。
詳細はどこかで調べていただけたらと思います。
これをrubyで実装する方法です。
http://www.geocities.jp/protozoa0/softs_j.html#m-packet
を参考にさせていただきました。
以下のようなファイルを用意します。
module Wol
require 'socket'
def self.send(mac,bcast="255.255.255.255",port=40000)
macb = [mac.gsub(/[\-\:]/, '')].pack('H*')
packet = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff].pack("C*")
16.times {
packet = packet + macb
}
sock = UDPSocket.open
sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1)
sock.connect(bcast,port)
3.times {
sock.send(packet, 0)
}
sock.close
true
end
end
railsの場合でしたら
lib/wol.rb
という名前で作成しておけば
Wol.send("00:11:22:33:44:55")
みたいな感じで利用できます。
0 件のコメント:
コメントを投稿