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 件のコメント:
コメントを投稿